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

Git: Multiple repositories in same folder with common files and code

我正在考虑将大型代码库移动到 Git。有许多团队在代码库上工作,多个发布版本正在 [交错] 生产中。有些人将同时处理 ReleaseBuild A 和 ReleaseBuild B,并且需要能够在使用同一文件夹的同时在构建存储库之间切换。在每个发布构建存储库中,许多文件和文件夹将不同,但也有许多相同。每个存储库都应该遵循自己的分支模型,就像这里看到的那样:http://nvie.com/posts/a-successful-git-branching-model/ .

用户需要使用同一文件夹来构建文件的原因是构建脚本的设置方式和 "security"。改变路径并不理想。我考虑过在单个模块中制作单独的子树,但这听起来很乱。子模块听起来也很有趣,但我不确定如果我想在另一个上使用一个子模块并且两个子模块共享同一个文件夹,它们是否会起作用。

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

在 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,它会删除原来的内容。

注意:Junction 需要提升(runas admin)。

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

I can guess you are taking care of some enterprise™ application... ugh. Just throw a bunch of branches at it and call them appropriately, like ReleaseA, ReleaseB (or ReleaseX_environment if you need to separate environments) and so on. Force your colleagues to keep the naming convention while working on features, for instance if you're using JIRA开始让分支命名为ReleaseX_TICKET-000

如果没有主发布版本,可以delete the master branch.

如果他们不知道GIT,教他们如何在分支之间切换比教他们如何在子模块和子树之间切换要容易得多,更不用说将那些乱七八糟的东西合并在一起了。

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