热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何将相关的应用程序组织成gitrepo?-HowtoOrganizerelatedapplicationsintogitrepo's?

Whatisthedecisiontreetoknowwhentosplitasuiteofrelatedandorcohesiveapplicationsinto

What is the decision tree to know when to split a suite of related and/or cohesive applications into git repo's and/or branches? Should I keep each app in a repo? Or all app's & dependencies in a single repo? Or something in-between?

什么是决策树知道何时将一套相关和/或有凝聚力的应用程序拆分为git repo和/或分支?我应该将每个应用程序保存在回购中吗?或者单个仓库中的所有应用程序和依赖项?或介于两者之间?

answer How should I organize multiple related applications using git? claims that a repository per project is appropriate, but does not give clues as to what a project would be.

回答我应该如何使用git组织多个相关的应用程序?声称每个项目的存储库是合适的,但没有提供关于项目将是什么的线索。

And then there's the question of dev, test, integration test, and production checkouts when the git repo's are split. Answer how do you organize your programming work lists some branch/tag options, but ignores the multi-app details.

当git repo被拆分时,存在开发,测试,集成测试和生产检查的问题。回答如何组织编程工作列出一些分支/标记选项,但忽略多应用程序详细信息。

There's also the DB schema! incremental definition of the schema helps, but again, where would one keep this definition if the DB spans back-end and front-end app's?

还有DB架构!模式的增量定义有帮助,但是,如果数据库跨越后端和前端应用程序,那么在哪里可以保留此定义?

Some examples I've been pondering:

我一直在思考的一些例子:

  1. a front-end web app and it's back-end CGI/DB: one repo or two?
  2. 一个前端Web应用程序和它的后端CGI / DB:一个或两个回购?

  3. a set of web back-ends that use features from other back-ends
  4. 一组使用其他后端功能的Web后端

  5. a set of front-end app's that share CSS and jquery plug-ins
  6. 一组共享CSS和jquery插件的前端应用程序

  7. selenium scripts that test front-end features across dependent code - in the front-end app repo or the dependent code repo?
  8. selenium脚本测试跨依赖代码的前端功能 - 在前端应用程序仓库或从属代码仓库?

If I want to work on a single app, it's hard (well, tedious and error prone) to check out a directory of a repo, so I have to check out the entire git tree (or at least clone the whole tree), so that implies that git is not really built for keeping all the app's & dependencies in a single tree.

如果我想在一个应用程序上工作,那么检查一个repo的目录是很困难的(好的,乏味的,容易出错的),所以我必须检查整个git树(或者至少克隆整个树),所以这意味着git并非真正用于将所有应用程序和依赖项保存在单个树中。

But if I want to keep each of the projects (app's, frameworks, dependencies, doc trees, CSS) in it's own repo, then I run into chasing my tail for dependency resolution, that is, I don't know which version of each app are compatible. I think git tags are a good way to go, if only I could move them to newer versions that maintain compatibility.

但是,如果我想将每个项目(应用程序,框架,依赖项,文档树,CSS)保留在它自己的仓库中,那么我会追逐我的尾巴以进行依赖性解析,也就是说,我不知道每个项目的版本应用程序兼容。我认为git标签是一个很好的方法,只要我能将它们移动到保持兼容性的新版本。

When app's split or merge -- as happens often with refactoring models down to baser models -- can i move the git history of just those files to another git? I don't see how to do this, so that leans towards a single repo for it all.

当应用程序拆分或合并时 - 通常将重构模型转换为baser模型 - 我可以将这些文件的git历史记录移动到另一个git吗?我不知道如何做到这一点,所以倾向于单一的回购。

If I develop a new feature across app's, it would be nice for branches to represent features.

如果我跨应用程序开发一个新功能,那么分支代表功能会很好。

I think I want a repo of repo's -- does that exist?

我想我想要一个回购的回购 - 那存在吗?

1 个解决方案

#1


1  

This is about using a component approach: a component being a coherent set of files which have their own history (own set of branches, tags and merges).
It should include only what cannot be generated (although the db schema can sometime be added to the repo, as seen in "What is the right approach to deal with Rails db/schema.rb file in GIT?". You still can generate it though, as shown in "What is the preferred way to manage schema.rb in git?", to avoid needless conflicts)

这是关于使用组件方法:组件是一组连贯的文件,它们有自己的历史记录(自己的一组分支,标签和合并)。它应该只包含无法生成的内容(尽管db模式有时可以添加到repo中,如“在GIT中处理Rails db / schema.rb文件的正确方法是什么?”中所示。)您仍然可以生成它但是,如“在git中管理schema.rb的首选方法是什么?”中所示,以避免不必要的冲突)

A component can evolve without another one having to evolve. See "Structuring related components in git".
That is the main criteria which allows you to answer: "X and Y: one or two repos?".
You can split a repo into two later, but be aware that will change their history: other contributor will need to reset their own repo to that new history.

一个组件可以在没有另一个组件发展的情况下发展。请参阅“在git中构建相关组件”。这是允许你回答的主要标准:“X和Y:一两个回购?”。您可以稍后将回购拆分为两个,但要注意这将改变其历史记录:其他贡献者需要将他们自己的回购重置为该新历史记录。

You can group those different components repos in one with submodules, as explained here (that is the "repo of repos", or, if you want to have only one repo, in subtree, as illustrated here.

您可以将这些不同的组件repos组合在一个子模块中,如此处所述(即“repos的repo”,或者,如果您只想在子树中有一个repo,如此处所示)。


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
author-avatar
PHP大傻子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有