首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对于在不同版本中共享相同代码的C++项目,Git有什么方法?

对于在不同版本中共享相同代码的C++项目,Git有什么方法?
EN

Stack Overflow用户
提问于 2017-03-08 20:50:10
回答 2查看 1.2K关注 0票数 3

让我们简化这个问题,考虑到下面的场景。

我正在使用三个C++项目,存储在中,三个不同的Git存储库。所有项目都需要生活在单独的回购中,因为在开发过程中,它们需要是独立于

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

编译项目1,您需要公共代码版本1(例如,旧版本)。要编译项目2,您需要公共代码版本2(例如,更新版本)。

有时,您希望将公共代码项目作为独立项目(类似于独立共享库)进行处理,编译它,进行测试,并可能提前使用新版本、分支等。

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

我需要处理上的所有项目,在同一天内在同一台机器上切换多时间,这样工作模型就不会太复杂,从而避免错误或问题。

我是否应该使用3并行存储库来解决编译时版本上的编译依赖(例如,在编译之前签出,正确的回购版本)?还有其他更好的解决方案(例如Git子模块)吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-08 21:05:20

你可以用

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

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

票数 1
EN

Stack Overflow用户

发布于 2017-03-08 20:52:24

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

How to check out specific version of a submodule using git submodule?

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42681675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档