我想问下面的代码行为什么我得到空指针Exception。这是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));
}
}
说明
重复运行此代码片段后,我遇到了Nullpointer异常。 我想测试我的xml Parsing for Merge Conflicts,这就是为什么我需要重复的Merge Conflicts来处理。目前只有Merge部分用于生成冲突。
据我所知,它停在下面的行
Map allConflicts = tmpMergeRes.getConflicts();
答案 0 :(得分:0)
所以我找到了解释:
基本上每当你运行git merge时,它都会触及工作目录,即使它的写入是there。
现在我将在干跑后重置头部。这是一个简单的解决方案,使用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();