Git 为不同的分支维护不同的构建

Git 为不同的分支维护不同的构建,git,Git,我正在开发一个软件,目前主要有两个分支,master和feature。问题是我需要同时处理这两个问题 我通常做的是为feature分支启动测试套件回归,然后在我的主分支上继续开发 因为到目前为止,我们使用CVS,这很容易,不同的分支位于不同的文件夹中,因此具有不同的最终构建(最终exe) 现在我们已经切换到GIT,既然现在两个分支都位于同一个位置(两个构建都将在同一个位置生成,使用相同的名称!),我如何在主分支上继续开发,以使我的功能构建保持完整,回归不会出现混乱。cd/your/GIT/rep

我正在开发一个软件,目前主要有两个分支,master和feature。问题是我需要同时处理这两个问题

我通常做的是为feature分支启动测试套件回归,然后在我的主分支上继续开发

因为到目前为止,我们使用CVS,这很容易,不同的分支位于不同的文件夹中,因此具有不同的最终构建(最终exe)

现在我们已经切换到GIT,既然现在两个分支都位于同一个位置(两个构建都将在同一个位置生成,使用相同的名称!),我如何在主分支上继续开发,以使我的功能构建保持完整,回归不会出现混乱。

cd/your/GIT/repository
cd /your/git/repository
export GIT_WORK_TREE=/build/directory
git checkout -f $BRANCH_TO_DEPLOY
cd /build/directory
<run build/test/other>
导出GIT\u WORK\u TREE=/build/directory git签出-f$BRANCH\u TO\u部署 cd/build/directory
通过分离构建目录,可以为每个分支运行不同的构建

实际上,我正在将其用于我所从事的一个项目,在该项目中,我从两个不同的分支部署到生产和测试环境。这是一个很好的系统,但是请注意一件事:根据您的设置,您可能需要清空您首先部署到的构建目录,因为此签出方法可能会有其他问题

有关更多详细信息,请参阅有关的链接

这里到底发生了什么


我们只是将一个分支签出到一个完全不同的目录,即将存储库与签出分离。因此,我们最终只能得到与上次提交
$BRANCH\u to\u DEPLOY
后的repo状态相对应的文件。我们可以对一个文件夹中的主分支和另一个文件夹中的功能分支执行此操作,并对这两个文件夹执行不同的操作。上面示例中的最后一步是运行测试套件。

我建议您只使用CVS中经过尝试和测试的路径,只需将git存储库克隆两次到单独的目录中即可。然后您可以同时处理这两个分支,并分别构建它们


一般来说,在密切相关或琐碎的分支之间切换时,单个克隆效果最好。如果在本质上不同的分支之间切换,则切换文件和重建所需的时间开始成为负担。很有可能您希望并行处理分支,这也不容易做到。

谢谢您的快速回答!我仍然不明白每个分支的构建是如何独立的。你能详细说明一下吗?我会补充一些细节。我现在不能,CVS模块已经变成只读,GIT是唯一剩下的选项。我不是说使用CVS,我是说像CVS一样使用GIT。在CVS中,您可以将每个分支的快照签出到单独的路径中。在Git中,在单独的路径上为每个分支创建一个克隆。换句话说,在一个克隆中处理一个分支,在另一个克隆中处理另一个分支。要同步它们,只需从中央回购中推拉即可。没有理由必须共享同一个克隆,如果需要同时签出这两个分支,那么就有理由使用多个克隆。