Я использую J Git для получения различий между двумя коммитами главной ветви.
Я могу получить DiffEntries, используя следующий код
List<DiffEntry> diffEntries = git.diff()
.setOldTree(getTree(repository, commitsList.get(commitsList.size() - 2)))
.setNewTree(getTree(repository, commitsList.get(commitsList.size() - 1))).call();
Теперь, используя DiffFormatter, я могу получить информацию об изменениях
ByteArrayOutputStream out = new ByteArrayOutputStream();
DiffFormatter formatter = new DiffFormatter(out);
formatter.setRepository(repository);
for (DiffEntry entry : diffEntries) {
formatter.setContext(0);
formatter.format(entry);
FileHeader fileHeader = formatter.toFileHeader(entry);
List<? extends HunkHeader> hunkHeaders = fileHeader.getHunks();
for (HunkHeader hunk : hunkHeaders) {
hunk.toEditList().forEach(System.out::println);
}
RawText r = new RawText(out.toByteArray());
r.getLineDelimiter();
System.out.println(out.toString());
out.reset();
}
formatter.close();
Ниже показаны изменения
INSERT(13-13,13-14)
diff --git a/Palindrome.java b/Palindrome.java
index 10ee237..4f3e462 100644
--- a/Palindrome.java
+++ b/Palindrome.java
@@ -13,0 +14 @@
+ System.out.println("Here in main");
Но в отличие от использования git diff, есть нет имени метода / функции после @@,
В любом случае это можно получить во время J Git diff вызова .
Любая помощь будет оценена. Спасибо!