Mercurial: отличается в конкретном наборе изменений?
Это почти точно дубликат Изучение одного набора изменений в Mercurial и, без сомнения, дубликат другого вопроса, который я не могу найти на SO через Google.
Я оглядываюсь назад через Mercurial repo, и я хочу посмотреть, что именно изменилось между двумя версиями (скажем, 2580 и 2581):
hg log -v -r 2581
дает мне все файлы, которые изменились.
Как я могу увидеть diffs этих файлов?
Спасибо.
Ответы
Ответ 1
В редакции 2580 нет необходимости пересматривать родительскую версию 2581. Легко проверить, конечно ли это, но еще проще:
hg log -p -r 2581
Это сравнивает 2581 с его (первой) версией родителя независимо от того, что это такое, и наиболее четко охватывает ответ на вопрос: "Что, черт возьми, сделал 2581?"
Ответ 2
Попробуйте hg diff -r 2580 -r 2581
.
Ответ 3
hg diff -r 2580 -r 2581
Это неправильный пример. Версия 2580 может находиться в другой ветке, и вы получаете разницу между двумя ветвями.
Используйте
hg log -p -r 2581
или hg diff -c 2581
Разница между ними в первых строках. Hg log также отображает информацию о changeet (parent, author, date,...)
Я предпочитаю второй вариант hg diff -c ...
, потому что он может хранить файлы исправлений.
hg diff -c 2581 > revision_2581.patch
Ответ 4
Другое решение состоит в том, чтобы использовать нотацию revset, какое IMO является лучшим решением, поскольку вы можете использовать его в большем количестве мест последовательно (т.е. вам не нужно знать о diff -c
и log -p
).
hg diff -r 'last(ancestors(2581),2)'
Да, это довольно многословно по сравнению с -c (для diff) и -p (для log).
Однако Mercurial позволяет создавать псевдонимы Revset
В вашем .hgrc
:
[revsetalias]
next(s) = descendants(s, 1)
prev(s) = last(ancestors(s),2)
Теперь вы можете сделать
hg diff -r 'prev(2581)'
hg log -r 'prev(2581)'