决定何时将一套相关和/或有凝聚力的应用程序拆分为git repo和/或分支的决策树是什么?我应该将每个应用程序保存在回购中吗?或者所有应用程序&单个回购中的依赖关系?还是介于两者之间?
回答How should I organize multiple related applications using git?声称每个项目的存储库是合适的,但没有提供项目内容的线索。
然后,当git repo被拆分时,存在开发,测试,集成测试和生产检查的问题。回答how do you organize your programming work列出了一些分支/标记选项,但忽略了多应用程序详细信息。
还有数据库架构!模式的增量定义有帮助,但是,如果数据库跨越后端和前端应用程序,那么在哪里可以保留此定义?
我一直在思考的一些例子:
如果我想在一个应用程序上工作,那么检查一个仓库的目录是很困难的(好的,乏味的,容易出错的),所以我必须检查整个git树(或者至少克隆整个树),这意味着git并不是真正构建用于保存所有应用程序&单个树中的依赖关系。
但是,如果我想将每个项目(应用程序,框架,依赖项,文档树,CSS)保留在它自己的回购中,那么我会追逐我的尾巴以进行依赖性解析,是的,我不知道每个应用程序的哪个版本兼容。我认为git标签是一个很好的方法,只要我能将它们移动到保持兼容性的新版本。
当应用程序拆分或合并时 - 通常将重构模型发送到baser模型 - 我可以将这些文件的git历史移动到另一个git吗?我不知道如何做到这一点,所以倾向于单一的回购。
如果我在应用程序中开发一项新功能,那么分支机构代表功能会很不错。
我想我想要一个回购回购 - 这是否存在?
答案 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