JGit CheckoutCommand不起作用

时间:2012-10-26 12:52:57

标签: java jgit

我正在克隆一个远程存储库,想要检查几个分支以与它们进行互操作(不对工作目录应用更改)。

所以我克隆了存储库:

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()。没有抛出异常,但该命令似乎对我的工作目录没有任何影响。

我在这里遗漏了什么吗?

2 个答案:

答案 0 :(得分:1)

我想你需要添加setStartPoint("origin/branchtotrack"),另见my answer to a similar question

答案 1 :(得分:0)

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

感谢您的帮助。