4

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

答案How should I organize multiple related applications using git?声称,每个项目库是合适的,但不给的线索,有的项目会。

然后还有开发,测试,集成测试和生产检出的问题时混帐回购协议的被分割。回答how do you organize your programming work列出了一些分支/标签选项,但忽略了多应用程序的详细信息。

还有DB架构!模式的增量定义有助于,但是如果数据库跨越后端和前端应用程序,那么人们会在何处保留此定义?

一些例子我一直在琢磨:

  1. 前端Web应用程序,它的后端CGI/DB:一个回购还是两个?使用其他后端功能
  2. 一组Web后端
  3. 一套前端应用程序的跨依赖代码测试前端功能,份额CSS和jQuery插件
  4. 硒脚本 - 在前端应用程序回购或从属代码回购?

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

但是,如果我想保留每个项目(应用程序的,框架,依赖关系,文档树,CSS)在它自己的回购,然后我碰到追逐我的尾巴依赖决议,也就是说,我不知道每个应用的哪个版本是兼容的。我认为git标签是一个很好的方法,只要我可以将它们移动到保持兼容性的新版本。

当应用程序的拆分或合并 - 与重构模型经常发生降至卑劣车型 - 我可以移动的只是那些文件git的历史到另一个混帐?我看不出如何做到这一点,所以倾向于单一回购。

如果我开发跨应用程序的一个新的功能,这将是很好的分支代表的功能。

我想我要回购的的回购 - 这是否存在?

回答

1

这是关于使用组件方法:一个组件是一个具有自己的历史(自己的一套分支,标签和合并)的连贯的文件集。
它应该只包括不能产生什么(尽管DB模式可有时被添加到回购,如“What is the right approach to deal with Rails db/schema.rb file in GIT?”见过。你仍然可以尽管生成它,如在“What is the preferred way to manage schema.rb in git?”,以避免needless conflicts

组件可以演化而不需要另一个组件演变。参见“Structuring related components in git”。
这是允许您回答的主要标准:“X和Y:一个或两个回购?”。
您可以稍后split a repointo two,但请注意会改变他们的历史记录:其他贡献者需要将自己的回购重置为新的历史记录。

您可以将这些不同组件回购于一体的具有子模块,为explained here(也就是“回购回购”,或者,如果你想只有一个回购协议,在subtree,为illustrated here