上下文:我的合并遇到了冲突,我有一个像这个例子的文件:
Foo.txt (合并)
1
<<<<<< HEAD
2-master
======
2-side
>>>>>> df803849788fde47965b3dc8f07f07d48320ea9c
3
问题:为了让实际更改了冲突行的开发人员,如何在提交之前责备结果文件(上面)?它适用于git blame Foo.txt
问题:我尝试执行以下操作,但是循环中的责任是null
。
MergeResult m = runMerge(aScenario);
BlameCommand blamer = new BlameCommand(git.getRepository());
BufferedReader br = new BufferedReader(new FileReader(new File(mergedfilepath)));
BlameResult blame = blamer.setFilePath(mergedfilepath).call();
for (int i = 0; (line= br.readLine())!=null ; i++) {
// the blame at this point is null.
PersonIdent person = blame.getSourceAuthor(i);
System.out.println(person.getName() + ": "+ line);
}
答案 0 :(得分:2)
我认为遍历的源应该是结果内容。
从那里开始,您可以遍历已更改的区域并要求作者。例如:
BlameResult blameResult = git.blame().setFilePath( ... ).call();
int size = blameResult.getResultContents().size();
for( int i = 0; i < size; i++ ) {
System.out.println( blameResult.getSourceAuthor( i ) );
}
至少对于添加到文件的工作目录版本的行,将返回名为 Not Committed Yet 的作者。
但是,您的代码应该准备好getSourceAuthor()
返回null
。 JavaDoc声明返回值可能为null 。