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

时间:2013-12-16 09:36:38

标签: git

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

我通常做的是触发功能分支的测试套件回归,然后继续在我的主分支上进行开发。

直到现在我们都在使用CVS,这很容易,不同的分支存在于不同的文件夹中,因此具有不同的最终构建(最终的exe)。

现在我们已经切换到GIT,因为现在两个分支都位于同一个地方(两个构建将在相同的位置生成,具有相同的名称!),如何在主分支上继续开发以便我的功能构建保持完整,回归不会搞砸。

2 个答案:

答案 0 :(得分:1)

cd /your/git/repository
export GIT_WORK_TREE=/build/directory
git checkout -f $BRANCH_TO_DEPLOY
cd /build/directory
<run build/test/other>

您可以通过分离构建目录为每个分支运行不同的构建。

我实际上将它用于我正在处理的项目,我从两个不同的分支部署到生产和测试环境。这是一个很好的系统,但要注意一件事:根据您的设置,您可能需要首先清空您正在部署的构建目录,否则这个结帐方法会出现问题。

有关详情,请参阅此git deployment strategies链接

这里到底发生了什么?

我们只是将分支检出到一个完全不同的目录,即我们将存储库与结帐分开。因此,我们最终只得到与$BRANCH_TO_DEPLOY上次提交后的repo状态相对应的文件。我们可以在一个文件夹中为master分支执行此操作,在另一个文件夹中执行功能分支,并对这两个文件夹执行不同的操作。上面示例中的最后一步是运行测试套件的位置。

答案 1 :(得分:0)

我建议你只使用CVS中经过试验和测试的路由 - 只需将你的git存储库两次克隆到不同的目录中。然后,您可以同时在两个分支上工作并单独构建它们。

一般来说,单个克隆在密切相关或无关紧要的分支之间切换时效果最佳。如果在不同的分支之间切换,则切换文件和重建所花费的时间开始成为负担。并且您可能希望并行处理分支,并且这样做也不容易。