Как использовать J Git, чтобы получить имя функции, связанное с изменениями кода - PullRequest
0 голосов
/ 24 февраля 2020

Я использую 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 вызова .

Любая помощь будет оценена. Спасибо!

...