存储库状态在JGit中合并

时间:2017-04-06 11:43:05

标签: jgit

我试图以编程方式解决合并冲突,即强制合并。 解决合并冲突后,如果我尝试提交,我会得到以下异常:

  

org.eclipse.jgit.api.errors.WrongRepositoryStateException:无法使用state:MERGING提交到存储库。

如何更改存储库状态或我遗漏了什么。 代码段:

if((RepositoryState.SAFE == pullCommand.getRepository().getRepositoryState())) {
  PullResult result = pullCommand.call();
  if(MergeStatus.CONFLICTING == result.getMergeResult().getMergeStatus()){

     mgCmd = git.merge();
     mgCmd.include(repo.getRef("refs/remotes/origin/development"));
     mgCmd.setStrategy(MergeStrategy.OURS);
     mgCmd.setCommit(true);
     res = mgCmd.call(); 
     System.out.println("Failing Path ==="+res.getFailingPaths());
     pullCommand.getRepository().resolve("C:\\CODE\\thin\\thinclient\\.git");
     if(res.getMergeStatus().equals(MergeResult.MergeStatus.CONFLICTING)){
       System.out.println("Merge status=========+++"+res.getMergeStatus());
     }

1 个答案:

答案 0 :(得分:0)

MergeCommand并不意味着解决合并冲突。反之亦然,如果包含的引用无法在没有冲突的情况下合并,则会导致合并冲突。

PullCommand复合命令,首先从上游提取提交,然后尝试使用MergeCommand合并它们。

为了以编程方式解决合并冲突,您需要相应地更改本地工作目录中的文件,将它们添加到索引,然后发出合并提交

有关冲突文件的信息可在pullResult.getMergeResult()中找到。可以使用常规CommitCommand创建合并提交