我有一些正在同时开发的功能。它们都在一个单独的分支中。
我的问题是,当我等待测试运行时,我想切换到另一个分支来处理另一个功能。但是,如果我签出另一个分支来处理另一个功能,那么它将干扰当前正在运行的测试。在 localtests 通过之前,我不想推送我的代码。
有没有人遇到过类似的问题?您有什么解决方案,这样您就不必等待测试通过?
编辑:有没有不涉及克隆第二个 repo 的解决方案?我已经试过了。效果很好,就是有点烦!
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"'
新的 / empty 目录需要是空的,以确保没有剩余的文件,这些文件在某个分支中但在某个时候被删除,仍然存在。
您在任何时候只能签出一个分支。
为了解决这个问题,我想到了两个不那么聪明的想法。首先,您可以将所有项目文件复制到测试目录并在那里运行测试,同时继续在存储库中工作。其次,虽然与第一个基本相同,但是将存储库克隆到辅助目录中,以便您在其中运行测试,同时继续在原始目录中工作。
您可以考虑使用Jenkins。它与 git 集成,让您可以简单地对代码执行任务。
在您的实例中,您可以创建一个新的测试分支并配置 Jenkins 以在有人推送到测试分支时运行您的测试。