Dan*_*ark 11 git shared-libraries git-submodules nuget git-subtree
我刚刚开始拆分包含所有产品代码的Git存储库,其中包括共享库,服务器,客户端和工具代码.
作为消除我们对DCVS的一些技术债务的一部分,我们建议将我们的共享客户端和服务器库移动到Nuget存档,该存档将对开发和发布分支具有严格控制的推送权限,以强制推动拉动请求我们一直懒散.分裂部分没什么大不了的; 我根据git filter-branch自己的喜好量身定制了历史保留,现在我正在研究如何将存储库重新组合在一起.
目前,在我准备将它们打包(以及正确的单元测试等)之前,库并不完全清晰,需要进行一些重构,并且希望能够对两个存储库进行更改,重点是代码审查,作为中短期解决方案.
我已经阅读了足够的内容,git subtree并git submodule了解他们的相对优势和劣势,但仍然对于该怎么做有冲突.虽然绝大多数资源git submodule由于其对那些不知道如何使用它的人的脆弱性而受到反对使用(有罪!),但它的另一种选择git subtree似乎缺乏我正在寻找的显式引用功能.
如果有人有类似我正在寻找的设置,或者有不同的工作流程,你能评论一下吗?当我"等待一口"时,我将离开并测试这两种策略,并希望有更高的评估.
小智 2
我们最近从更传统的版本控制系统转向了 Git。早在我开始之前,我们就养成了将库签入版本控制的习惯。显然这在 Git 中效果不佳,在其他 VC 中也不是一个好主意。因此,我们遇到了与您类似的选择。在审查了子树和子模块之后,我们决定两者都不使用。我们有多个作为对等点克隆的存储库:
<some folder>
|
+ <repo1>
|
+ <repo2>
|
+ <repo3>
|
+ <packages>
Run Code Online (Sandbox Code Playgroud)
我们还使用 Nuget 来处理我们的库(请注意,我们正在使用 C 和 C++ 而不是 .Net 进行开发)。Nuget 对于本机库来说已经足够好了,我们还没有找到替代方案。这个过程比我想要的要手动得多,但它确实避免了一系列似乎困扰子模块和子树的“有趣”问题。
希望有帮助。