Получить список измененных файлов после извлечения с помощью JGit

Я хотел бы знать, как я могу получить список измененных файлов после запроса на вытягивание.

Я использую это, чтобы получить все объединенные коммиты, но я хочу знать все измененные файлы.

Git git = new Git(localRepo);
PullCommand pullCmd = git.pull();
PullResult pullResult = pullCmd.call();
MergeResult mergeResult = pullResult.getMergeResult();
ObjectId[] mergedCommits = mergeResult.getMergedCommits();

for (ObjectId mergedCommit : mergedCommits) {
  // And now?
}

person Davide Pastore    schedule 01.10.2014    source источник


Ответы (2)


Опираясь на предыдущие комментарии/вопросы:

Получите текущую головку прежде чем тянуть:

ObjectId oldHead = repository.resolve("HEAD^{tree}");

И снова после извлечения:

ObjectId head = repository.resolve("HEAD^{tree}");

Затем вы сможете запустить diff так же, как в Как сделать аналог git diff --name-status с jgit?:

ObjectReader reader = repository.newObjectReader();
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
oldTreeIter.reset(reader, oldHead);
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
newTreeIter.reset(reader, head);
List<DiffEntry> diffs= git.diff()
                    .setNewTree(newTreeIter)
                    .setOldTree(oldTreeIter)
                    .call();
person centic    schedule 02.10.2014


$git diff-tree --no-renames --no-commit-id --name-only -r

Мой подход, который работает для меня:
1. Собрать все хеши в файл (скажем, tempfile1)
2. xargs -n1 git diff-tree --no-renames --no-commit-id - -только-имя -r ‹ tempfile1 >> tempfile2
3. sort tempfile2 | uniq >> final (Чтобы удалить повторяющиеся записи)

окончательный файл будет содержать все измененные файлы

person Mudassir Razvi    schedule 01.10.2014
comment
Я использую jgit, а не обычный инструмент командной строки git. - person Davide Pastore; 01.10.2014
comment
В этом случае посмотрите, поможет ли это: stackoverflow.com/questions/8520682/ Решение состоит в том, чтобы использовать diff-tree, как вы используете его в jgit, указано в ссылка выше. - person Mudassir Razvi; 01.10.2014