繁体   English   中英

Git如何使用在不同版本中共享相同代码的C ++项目?

[英]What's the Git way to work with C++ projects that share the same code at different revisions?

让我们考虑以下场景简化问题。

我正在处理存储在三个不同Git存储库中的 三个C ++项目 所有项目都需要在一个单独的仓库中生存,因为它们在开发过程中需要独立

  • 项目1
  • 项目2
  • 共同代码项目

编译 Project 1,您需要Common Code版本1(例如旧版本 )。 编译 Project 2,您需要Common Code版本2(例如更新版本 )。

有时您希望使用Common Code Project作为独立项目 (一种独立的共享库 ),编译它,进行测试,并可能推进新版本,分支机构等。

项目1和项目2将保留他们的故事,即使公共代码在其个人故事中有所进展 ,他们也可能需要不同旧版本的公共代码进行编译。

我需要在同一台机器上的所有项目上工作,在同一天之间切换多次 ,因此工作模型不能太复杂,以免出错或出问题。

我应该使用3个并行存储库来解决编译时对版本的编译依赖性(例如,在编译之前 检查出 repo的正确版本)? 还有其他更好的解决方案(例如Git Submodules )吗?

这听起来像一个git子模块任务。 使用子模块,您可以引用特定修订版本的另一个存储库。

如何使用git子模块检查子模块的特定版本?

你可以用

  1. git submodule s(不是真的推荐,难以维护,如果你陷入困境,git会进入奇怪的狂暴状态 - 例如从git下面删除一个子模块目录,所以它真的很脆弱)
  2. git subtree s,可能是更方便的git subrepo形式( https://github.com/ingydotnet/git-subrepo ) - 这会导致一些代码重复,所以我也会谨慎使用它,特别是如果项目很大的话。
  3. repo工具 - https://code.google.com/p/git-repo/

使用repo您需要设置一个manifest repository ,该manifest repository将描述从哪个manifest repository ,哪些修订以及填充项目部分的目录。 这允许您完全独立地开发组件,并锁定这些项目的某些版本并保持清晰的历史记录 - manifest repository是单独版本化的,并且可以具有特定版本软件的标记。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM