Mercurial: различия в конкретном наборе изменений? - PullRequest
48 голосов
/ 21 марта 2011

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

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

hg log -v -r 2581 

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

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

Спасибо.

Ответы [ 4 ]

72 голосов
/ 21 марта 2011

Редакция 2580 не обязательно является родительской ревизией 2581. Легко проверить, конечно ли это, но все же проще сделать:

hg log -p -r 2581

Это сравнивает 2581 с его (первой) родительской ревизией, независимо от того, что это такое, и наиболее четко включает в себя ответ на вопрос «что, черт возьми, сделал 2581?»

5 голосов
/ 21 марта 2011

Попробуйте hg diff -r 2580 -r 2581.

3 голосов
/ 18 января 2016
hg diff -r 2580 -r 2581

Это неправильный пример. Ревизия 2580 может быть в другой ветке, и вы получите diff между двумя ветвями.

Использование

hg log -p -r 2581

или hg diff -c 2581

Разница между ними в первых строках. Журнал Hg также показывает информацию о наборе изменений (родитель, автор, дата, ...)

Я предпочитаю второй вариант hg diff -c ..., потому что он может хранить файлы патчей.

hg diff -c 2581 > revision_2581.patch

0 голосов
/ 05 апреля 2019

Другое решение состоит в том, чтобы использовать нотацию 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)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...