Я новичок в JGit, так что, возможно, я что-то не так понимаю, но мне не удается получить результат от команды pull.
Под этим я подразумеваю список файлов, на которые повлияло извлечение (измененные / добавленные / удаленные файлы, ....)
Я попробовал несколько вещей, но ни одна из них не дала мне нужную мне информацию:
PullResult pull_res = git.pull().setCredentialsProvider(cred).call();
MergeResult merge_res = pull_res.getMergeResult();
FetchResult fetch_res = pull_res.getFetchResult();
java.lang.System.out.println("MergeStat1: "+merge_res.getMergeStatus());
java.lang.System.out.println("####################################");
java.lang.System.out.println("MergeStat2: "+merge_res.getMergedCommits());
java.lang.System.out.println("####################################");
java.lang.System.out.println("FetchRes: "+fetch_res.getMessages());
java.lang.System.out.println("####################################");
java.lang.System.out.println("PullRes1: "+pull_res.getFetchResult());
java.lang.System.out.println("####################################");
java.lang.System.out.println("PullRes2: "+pull_res.getFetchResult().getMessages());
java.lang.System.out.println("####################################");
java.lang.System.out.println("PullRes3: "+pull_res.getFetchResult().toString());
java.lang.System.out.println("####################################");
java.lang.System.out.println("PullRes4: "+pull_res.getFetchResult().getMessages().toString());
java.lang.System.out.println("####################################");
java.lang.System.out.println("PullRes5: "+pull_res.getMergeResult());
java.lang.System.out.println("####################################");
java.lang.System.out.println("PullRes6: "+pull_res.getRebaseResult());
java.lang.System.out.println("####################################");
java.lang.System.out.println("PullRes7: "+pull_res.getFetchedFrom());
Это приводит к следующему выводу:
MergeStat1: Fast-forward
####################################
MergeStat2: [Lorg.eclipse.jgit.lib.ObjectId;@1....
####################################
FetchRes:
####################################
PullRes1: org.eclipse.jgit.transport.FetchResult@3....
####################################
PullRes2:
####################################
PullRes3: org.eclipse.jgit.transport.FetchResult@3....
####################################
PullRes4:
####################################
PullRes5: Merge of revisions a...., 1a.. with base 1a... using strategy recursive resulted in: Fast-forward.
####################################
PullRes6: null
####################################
PullRes7: origin
Что я могу сделать, чтобы получить список всех затронутых файлов из этого извлечения? (также как они были затронуты: изменены, добавлены, удалены ..)
UPDATE
С ответом Рюдигерса я пришел к следующему решению задачи:
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
ObjectId tree = git.getRepository().resolve("HEAD^{tree}");
newTreeIter.reset(reader, tree);
UsernamePasswordCredentialsProvider cred = new UsernamePasswordCredentialsProvider(USER, PASSWORD);
PullResult pull_res = git.pull().setCredentialsProvider(cred).call();
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
tree = git.getRepository().resolve("HEAD^{tree}");
oldTreeIter.reset(reader, tree);
DiffFormatter df = new DiffFormatter(new ByteArrayOutputStream());
df.setRepository( git.getRepository() );
List<DiffEntry> entries = df.scan(oldTreeIter, newTreeIter);
for(DiffEntry entry : entries) {
java.lang.System.out.println(entry);
}