Git:同一文件夹中的多个存储库,包含公共文件和代码

时间:2016-06-23 22:28:12

标签: git git-submodules multiple-repositories git-branch-sculpting common-files

我正在考虑将大型代码库迁移到Git。有很多小组在代码库上工作,多个版本构建在[交错]生产中。有些人会同时处理ReleaseBuild A和ReleaseBuild B,并且需要能够在使用相同文件夹的同时在构建存储库之间切换。许多文件和文件夹在每个版本构建存储库中都是不同的,并且很多相同。每个存储库都应遵循自己的分支模型,如下所示:http://nvie.com/posts/a-successful-git-branching-model/

用户需要使用相同的文件夹来构建文件的原因是构建脚本的设置方式和安全性#34;。改变路径并不理想。我曾考虑在一个单独的模块中制作单独的子树,但这听起来很混乱。子模块听起来也很有趣,但我不确定如果我想使用其中一个而不是另一个子模块共享同一个文件夹它们是否会工作。

TLDR:有没有人知道管理多个基线的好方法,这些基线使用相同的本地文件夹对它们进行并发工作?

2 个答案:

答案 0 :(得分:0)

在Windows上,您可以使用联结来切换当前存储库。 请参阅sysinternals(microsoft)https://technet.microsoft.com/pl-pl/en-en/sysinternals/bb896768.aspx中的联结。

假设您的存储库位于c:\ repos \ a,c:\ repos \ b和c:\ repos \ c中,并且您的构建仅适用于c:\ myrepo。 您可以创建一个类似

的联结,而不是重命名
junction c:\myrepo c:\repos\b

现在从c:\ myrepo

构建b
junction /D c:\myrepo
junction c:\myrepo c:\repos\a

现在从c:\ myrepo

构建一个

不要删除资源管理器中的c:\ myrepo,它会删除原始内容。

注意:交叉点需要提升(runas admin)。

在Linux上看看符号(软)或硬链接,但我从未使用过它们。

答案 1 :(得分:0)

this comment我可以猜到你正在处理一些企业™应用......呃。只需在其上抛出一堆分支并适当地调用它们,例如ReleaseAReleaseB(如果需要分离环境,则为ReleaseX_environment),依此类推。强制您的同事在处理功能时保留命名约定,例如,如果您使用JIRA,请将分支命名为ReleaseX_TICKET-000

如果没有主要版本,您可以delete the master branch

GIT tree for your project might look like this

如果他们不了解GIT,那么教他们如何在分支之间切换将比教授如何在子模块和子树之间切换更容易,更不用说将这些混乱合并在一起了。

如果有一天你的公司决定需要强制进行代码审核,负责将其全部移至gerrit的人会感谢你。