如何在等待测试运行时模拟地在多个分支上工作



我有几个功能同时在做。它们都在一个单独的分支中。

我的问题是,当我等待测试运行时,我想切换到另一个分支来处理另一个功能。但是,如果我签出另一个分支来处理另一个功能,那么它会干扰当前正在运行的测试。我不想在本地测试通过之前推送我的代码。

有没有人遇到过类似的问题?您的解决方案是什么,这样您就不必等待测试通过?

编辑:是否有不涉及克隆第二个存储库的解决方案?我已经尝试过了。效果很好,只是有点烦人!

cd .. && git clone repo repo2

正如其他人所指出的,您只能在当前目录中签出一件事,或多或少根据定义。 本地克隆也很便宜。 但是,如果你想避免克隆,你可以将分支的副本签出到其他(新)目录中并在那里运行测试,假设测试框架正确处理:

mkdir /some/where/else   # or mkdir ../else or whatever
git --work-tree=/some/where/else checkout -- .

或(可编写脚本):

sh -c 't=$(git rev-parse --git-dir) && export GIT_DIR=$(readlink -f $t) && 
    cd /tmp && mkdir test-xx && cd test-xx && git checkout -- . || 
    echo "unable to check out copy into test dir"'

新的/空目录需要为空,以确保没有剩余的文件仍然存在,这些文件位于某个分支中,但在某个时候被删除。

任何时候只能签出一个分支。

我想到了两个不那么聪明的想法来解决这个问题。首先,您可以将所有项目文件复制到测试目录,并在继续在存储库中工作的同时在那里运行测试。其次,虽然与第一个基本相同,但将存储库克隆在辅助目录中,以便您在其中运行测试,同时继续在原始目录中工作。

你可以考虑使用 Jenkins。它与 git 集成,让您只需对代码执行任务。

在您的实例中,您可以创建一个新的测试分支,并将 Jenkins 配置为在有人推送到测试分支时运行您的测试。

最新更新