Подтвердить что ты не робот

Mercurial: отличается в конкретном наборе изменений?

Это почти точно дубликат Изучение одного набора изменений в Mercurial и, без сомнения, дубликат другого вопроса, который я не могу найти на SO через Google.

Я оглядываюсь назад через Mercurial repo, и я хочу посмотреть, что именно изменилось между двумя версиями (скажем, 2580 и 2581):

hg log -v -r 2581 

дает мне все файлы, которые изменились.

Как я могу увидеть diffs этих файлов?

Спасибо.

4b9b3361

Ответ 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)'