1

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

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

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

4

2 回答 2

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 上查看符号(软)或硬链接,但我从未使用过这些。

于 2016-06-23T22:43:19.750 回答
0

这个评论我可以猜到你正在处理一些企业™应用程序......呃。只需向它扔一堆分支并适当地调用它们,例如ReleaseAReleaseB(或者ReleaseX_environment如果您需要分离环境)等等。强制您的同事在处理功能时保持命名约定,例如,如果您使用JIRA ,请让分支命名ReleaseX_TICKET-000

如果没有主发布版本,可以删除master分支

您项目的 GIT 树可能如下所示

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

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

于 2016-06-24T04:55:47.753 回答