使用不同补丁的多个同时构建,但只有一个存储库检出

Multiple simultaneous builds using different patches but only one repository checkout

我知道这个标题不好,但我不知道该怎么表达。

如果有人认为更好的标题,请随意编辑或发表评论并提出建议

场景

您想要测试一个公共主干的不同分​​支并且您想要同时构建它们。不幸的是,单次签出的代码是 10GB。

理想

您检查了分支的共同祖先,然后您获得了每个分支的 .patch 文件。

重要提示:您的构建系统是 OUT-OF-PLACE。

然后您将补丁作为参数输入到……一些其他可执行文件,该可执行文件将为包含该补丁和您的基本祖先修订版的构建创建一个虚拟文件系统。

问题

是否存在这样的实用程序?
不幸的是 Docker 不是一个选项,因为 Windows 摇杆仅在 Windows 10 上。

Clear Case 提供多版本文件系统支持 (https://en.wikipedia.org/wiki/Rational_MultiVersion_File_System)。在 UNIX 上工作,但不确定它是否在 Windows 上工作。

在 windows 上有很多方法可以做到这一点,最简单的方法是获取具有 UFW 功能的 windows 10。

另一种方法是使用某种虚拟化软件。例如,Virtualbox 具有 differencing images feature, what allow to create base disk image for single checkout and differencing disk image for every patch. Virtualbox can run on linux, mac os and windows hosts. And you can run windows and linux guests inside. It is possible to automate virtual machine creation using VBoxManage 实用程序,因此您可以使测试自动化。

这是另一个可能有用的解决方案。 linux 的 overlayfs 功能允许在单次签出时创建覆盖文件夹。可以使用 linux 和 virtualbox 为 windows 设置 overlayfs。为此,您必须安装 virtualbox,在其中安装 ubuntu,检查项目,为补丁制作叠加层,将叠加层文件夹共享到 windows 和 运行 build on windows。不过我猜UFW会快很多。