我有几个功能同时在做。它们都在一个单独的分支中。
我的问题是,当我等待测试运行时,我想切换到另一个分支来处理另一个功能。但是,如果我签出另一个分支来处理另一个功能,那么它会干扰当前正在运行的测试。我不想在本地测试通过之前推送我的代码。
有没有人遇到过类似的问题?您的解决方案是什么,这样您就不必等待测试通过?
编辑:是否有不涉及克隆第二个存储库的解决方案?我已经尝试过了。效果很好,只是有点烦人!
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 配置为在有人推送到测试分支时运行您的测试。