【问题标题】:JGIT Repeated Merge Conflict Null pointer exception [duplicate]JGIT重复合并冲突空指针异常[重复]
【发布时间】:2018-05-14 08:58:41
【问题描述】:

我想问一下为什么我得到空指针异常。这是我不理解的与 Git 相关的东西吗?

refsideMerge=existingRepo.exactRef("refs/heads/sideMerge");
tmpMerge = git.merge();
tmpMerge.include(refsideMerge);
tmpMerge.setCommit(false);//dry run to get conflicting files
tmpMergeRes = tmpMerge.call();

Map allConflicts = tmpMergeRes.getConflicts();          
 for (Map.Entry<String,int[][]> entry : tmpMergeRes.getConflicts().entrySet()) {
 System.out.println("Key: " + entry.getKey());
  for(int[] arr : entry.getValue()) {
   System.out.println("value: " + Arrays.toString(arr));
  }
}

说明:

在反复运行此代码 sn-p 后,我遇到了 Nullpointer 异常。 我想测试我的 xml Parsing for Merge Conflicts,这就是为什么我需要重复的 Merge Conflicts 来处理。目前只有 Merge 部分用于产生冲突。

据我所知,它停在下面一行

Map allConflicts = tmpMergeRes.getConflicts();

【问题讨论】:

    标签: java git nullpointerexception jgit


    【解决方案1】:

    所以我找到的解释是:

    基本上每当你运行 git merge 时,它​​都会触及工作目录,即使它的空运行是它所写的there

    有两种可能的解决方案: First, Second.

    现在我将在空运行后重置头部。这是一个简单的解决方案,使用 ResolveMerger 的其他解决方案会更好,但仍在研究如何做到这一点。

    refsideMerge=existingRepo.exactRef("refs/heads/sideMerge");
    tmpMerge = git.merge();
    tmpMerge.include(refsideMerge);
    tmpMerge.setCommit(false);//dry run to get conflicting files
    tmpMergeRes = tmpMerge.call();
    
    Map allConflicts = tmpMergeRes.getConflicts();          
     for (Map.Entry<String,int[][]> entry : tmpMergeRes.getConflicts().entrySet()) {
     System.out.println("Key: " + entry.getKey());
      for(int[] arr : entry.getValue()) {
       System.out.println("value: " + Arrays.toString(arr));
      }
    }
    git.reset().setMode(ResetType.HARD).call();
    

    【讨论】:

      猜你喜欢
      • 2014-02-04
      • 2014-07-28
      • 2016-04-28
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      相关资源
      最近更新 更多