Как получить все измененные файлы с момента фиксации в jGit?

TreeWalk позволяет получить все изменения в одном коммите или во всем репозитории, а проверка измененных файлов для каждого коммита (с помощью RevWalk) работает очень медленно, около 2 минут. Есть ли способ просмотреть измененные файлы и проверить, в какой фиксации они были изменены в последний раз? Или другое более быстрое решение? Вот мой код для получения измененных файлов из коммита:

TreeWalk treeWalk = prepareTreeWalk(commit, git.getRepository());
List<String> files = new ArrayList<>();
while (treeWalk.next()) {
  if (!hasSimilar(treeWalk)) {
    files.add(treeWalk.getPathString());
  }
}

и для выбора коммитов (так как некоторые специальные):

return Lists.reverse(StreamSupport.stream(
  git.log()
  .add(git.getRepository().resolve(branch.getName()))
  .call()
  .spliterator(), false)
    .filter(since(sinceCommit::equals))
    .collect(Collectors.toList()));

person Vadym Borys    schedule 25.04.2019    source источник
comment
С какой другой фиксацией вы бы сравнили «с момента фиксации», чтобы получить измененные файлы? Это будет HEAD?   -  person Rüdiger Herrmann    schedule 25.04.2019
comment
от какого-то старого коммита до самого нового в текущей ветке   -  person Vadym Borys    schedule 25.04.2019
comment
Я думаю, что здесь есть ответ на ваш вопрос: stackoverflow.com/questions/28785364/ Чтобы найти фиксацию "с тех пор", я рекомендую использовать простой RevWalk с фильтром даты, как показано здесь: stackoverflow.com/questions/31074116 /   -  person Rüdiger Herrmann    schedule 25.04.2019


Ответы (1)


Я знаю командную строку ниже, она напечатает вывод в течение мс

git format-patch initial-commit --stdout > output.patch

person Baburaj Kandasamy    schedule 25.04.2019