1

我有一些正在同时开发的功能。它们都在一个单独的分支中。

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

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

编辑:有没有不涉及克隆第二个 repo 的解决方案?我已经试过了。效果很好,就是有点烦!

4

4 回答 4

2
cd .. && git clone repo repo2
于 2013-09-30T23:28:27.647 回答
1

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

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 目录需要是空的,以确保没有剩余的文件,这些文件在某个分支中但在某个时候被删除,仍然存在。

于 2013-10-01T11:48:04.030 回答
0

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

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

于 2013-10-01T00:08:13.123 回答
0

您可以考虑使用Jenkins。它与 git 集成,让您可以简单地对代码执行任务。

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

于 2013-10-01T07:58:32.053 回答