如何将相关的应用程序组织成git repo?

时间:2014-09-26 22:16:29

标签: database git github version-control development-environment

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

回答How should I organize multiple related applications using git?声称每个项目的存储库是合适的,但没有提供项目内容的线索。

然后,当git repo被拆分时,存在开发,测试,集成测试和生产检查的问题。回答how do you organize your programming work列出了一些分支/标记选项,但忽略了多应用程序详细信息。

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

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

  1. 一个前端Web应用程序及其后端CGI / DB:一个或两个回购?
  2. 一组使用其他后端功能的网络后端
  3. 一组共享CSS和jquery插件的前端应用
  4. 在依赖代码中测试前端功能的selenium脚本 - 在前端应用程序仓库或从属代码仓库中?
  5. 如果我想在一个应用程序上工作,那么检查一个仓库的目录是很困难的(好的,乏味的,容易出错的),所以我必须检查整个git树(或者至少克隆整个树),这意味着git并不是真正构建用于保存所有应用程序&单个树中的依赖关系。

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

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

    如果我在应用程序中开发一项新功能,那么分支机构代表功能会很不错。

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

1 个答案:

答案 0 :(得分:1)

这是关于使用组件方法:组件是一组连贯的文件,它们有自己的历史记录(自己的一组分支,标签和合并)。
它应该只包括无法生成的内容(尽管db模式有时可以添加到repo中,如“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 repo into two,但要注意这将改变他们的历史记录:其他撰稿人需要将他们自己的回购重置为新的历史记录。

您可以将这些不同的组件repos分组为一个子模块,如explained here(即“repos的回购”,或者,如果您只想在subtree中只有一个回购,则为illustrated here