0

我正在克隆一个远程存储库,并希望签出几个分支以与它们互操作(而不对工作目录应用更改)。

所以我克隆了存储库:

CloneCommand clone = Git.cloneRepository();
clone.setURI(project.getUrl());
clone.setDirectory(new File(RepositoryHandlerHelper
        .getFilePath(project)));
clone.setCredentialsProvider(getCredentials());
clone.setCloneAllBranches(true);

clone.call();

那行得通。现在我在本地硬盘上创建远程分支(循环):

git.branchCreate().setName(currentBranchToBuild)
.setUpstreamMode(SetupUpstreamMode.TRACK)
.call();

这也有效。我不确定这是必要的。之后我尝试检查每个分支:

git.checkout().setName(currentBranchToBuild).call();

我确定正确的分支名称已提交到setName(). 没有抛出异常,但该命令似乎对我的工作目录没有任何影响。

我在这里错过了什么吗?

4

2 回答 2

1

我想您需要添加setStartPoint("origin/branchtotrack"),另请参阅我对类似问题的回答

于 2012-10-26T13:16:24.650 回答
0

找到了一个可行的解决方案:我不需要创建每个分支的本地副本。如果我只是检查远程分支,它就可以工作。我的问题是不同的。我正在生成每个分支的 JavaDoc(结帐然后创建 JavaDoc)。但似乎结帐不会立即生效。如果我在 git.checkout... 和生成 JavaDoc 的调用之间放置一个 Thread.sleep(1000),它就可以正常工作。

谢谢您的帮助。

于 2012-10-26T14:56:16.653 回答