让我们简化这个问题,考虑到下面的场景。
我正在使用三个C++项目,存储在中,三个不同的Git存储库。所有项目都需要生活在单独的回购中,因为在开发过程中,它们需要是独立于的。
要编译项目1,您需要公共代码版本1(例如,旧版本)。要编译项目2,您需要公共代码版本2(例如,更新版本)。
有时,您希望将公共代码项目作为独立项目(类似于独立共享库)进行处理,编译它,进行测试,并可能提前使用新版本、分支等。
项目1和项目2将保留他们的故事,他们可能需要不同的旧版本的公共代码进行编译,即使公共代码在其个人故事中超越了。
我需要处理上的所有项目,在同一天内在同一台机器上切换多时间,这样工作模型就不会太复杂,从而避免错误或问题。
我是否应该使用3并行存储库来解决编译时版本上的编译依赖(例如,在编译之前签出,正确的回购版本)?还有其他更好的解决方案(例如Git子模块)吗?
发布于 2017-03-08 13:05:20
你可以用
git submodule
(并不是真正推荐的,很难维护,如果你搞砸了,git会进入奇怪的疯狂状态,例如从git下面删除一个子模块目录,所以它非常脆弱)。git subtree
,可能是一种更方便的git subrepo
(https://github.com/ingydotnet/git-subrepo)形式--这会导致一些代码重复,所以我也会谨慎使用它,特别是当项目很大的时候。repo
工具- https://code.google.com/p/git-repo/使用repo
,您需要设置一个manifest repository
,它将描述从哪个repos、哪些修订以及哪些目录来填充项目部分。这允许您完全独立地开发组件,并锁定这些项目的某些版本,同时保持清晰的历史-- manifest repository
是单独版本的,可以为特定版本的软件进行标记。
发布于 2017-03-08 12:52:24
这听起来像是一个git子模块任务。有了子模块,您可以在特定的修订版中引用另一个存储库。
How to check out specific version of a submodule using git submodule?
https://stackoverflow.com/questions/42681675
复制相似问题