Я хочу получить измененные файлы между двумя фиксациями, а не информацию о различиях, как я могу использовать JGit для этого?
Как получить список измененных файлов для фиксации с помощью JGit
comment
Я думаю, что здесь уже был дан ответ: stackoverflow.com/questions/28785364/
- person Rüdiger Herrmann   schedule 04.11.2020
comment
Отвечает ли это на ваш вопрос? Список файлов, измененных между фиксациями с помощью JGit
- person Rüdiger Herrmann   schedule 04.11.2020
Ответы (1)
С двумя ссылками, указывающими на два коммита, достаточно сделать следующее, чтобы повторить все изменения между коммитами:
ObjectId oldHead = repository.resolve("HEAD^^^^{tree}");
ObjectId head = repository.resolve("HEAD^{tree}");
// prepare the two iterators to compute the diff between
try (ObjectReader reader = repository.newObjectReader()) {
CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
oldTreeIter.reset(reader, oldHead);
CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
newTreeIter.reset(reader, head);
// finally get the list of changed files
try (Git git = new Git(repository)) {
List<DiffEntry> diffs= git.diff()
.setNewTree(newTreeIter)
.setOldTree(oldTreeIter)
.call();
for (DiffEntry entry : diffs) {
System.out.println("Entry: " + entry);
}
}
}
}
person
centic
schedule
04.11.2020
Однако DiffEntry может предоставлять только такую информацию, как newPath и oldPath. Как я могу использовать пути или другую возможную информацию, предоставленную DiffEntry, чтобы изменить файлы?
- person Allen Abner; 06.11.2020
Не уверен, что вы имеете в виду под отсутствием измененных файлов. Вы получаете новый/старый путь как часть DiffEntry. Для неходов он будет одинаковым как для старого, так и для нового, так что для простых модификаций либо будет ваш путь
- person centic; 06.11.2020