Как показать список непримененных наборов изменений в Mercurial - PullRequest
3 голосов
/ 05 июля 2011

После отправки наборов изменений в репозиторий с именем «A», как я могу увидеть список наборов изменений, ожидающих применения, когда я нахожусь в «A»?

Расширяя это,

  1. В репо B я нажимаю ревизии в репо B
  2. Я перехожу на репо B
  3. Как я могу перечислить наборы изменений, выдвинутые на шаге 1?

Ответы [ 3 ]

8 голосов
/ 05 июля 2011

Не уверен, что вы имеете в виду под "не примененными" наборами изменений, однако вот пара соображений.

Вы можете легко увидеть, какие наборы изменений будут помещены в хранилище, выполнив hg outgoing перед выполнением hg push,В этом списке будут перечислены все наборы изменений, которые будут отправлены с использованием параметров по умолчанию.

Аналогично, вы можете использовать hg incoming в хранилище назначения, чтобы показать, какие наборы изменений будут извлечены из другого репо.

Какдля «неприменимых» наборов изменений, если я предполагаю, что вы имеете в виду наборы изменений, которые являются более новыми, чем рабочий каталог, вы можете использовать hg log -r .:tip, который должен (у меня не было возможности протестировать его) показать все более новые ревизии, но не всенедавно добавленные.

Редактировать: Я обновил набор ревизий в опции -r, чтобы он работал.Посмотрите на revsets на Mercurial manpage , чтобы узнать больше возможностей.

5 голосов
/ 05 июля 2011
$ hg summary
parent: 0:9f47fcf4811f 
 .
branch: default
commit: (clean)
update: 2 new changesets (update) <<<<<

Бит update говорит вам, что (я думаю) вы хотите.

1 голос
/ 06 апреля 2017

Я написал другой ответ, но в итоге я нашел лучший способ сделать то, что нужно здесь (еще лучшее и окончательное решение - для меня - в конце этого поста, в разделе [EDIT]) .

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

В частности, сначала введите команду hg sum. Это даст мне:

parent: 189:77e9fd7e4554
 <some commit message>
branch: default
commit: (clean)
update: 2 new changesets (update) 

Чтобы увидеть, из чего сделаны эти 2 новых набора изменений, я использую

hg log -r tip -r 2 -v

Очевидно, что 2 должно быть заменено количеством наборов изменений, о которых сообщает hg sum.

Это работает, потому что tip будет ссылаться на самую последнюю (или «не примененную») ревизию. Ограничивая вывод двумя последними изменениями (-l 2), информация отображается только для тех наборов изменений, которые меня интересуют. С -v также отображается список файлов, затронутых набором изменений.

Чтобы упростить задачу, я определил пользовательскую команду в моем .bashrc файле:

alias hglog="hg log -r tip -l $1"

Это позволяет мне набрать hg sum (чтобы получить количество ожидающих / не примененных наборов изменений), а затем набрать hglog x, где x - количество наборов изменений, выявленных с помощью hg sum.

Вероятно, есть более полный способ сделать это, например, с помощью пользовательских шаблонов, но я думаю, что это слишком далеко продвигается в плане сложности.

[EDIT] ( Третья итерация ) Я нашел наиболее удовлетворительный ответ на этот вопрос, расширив идею псевдонима, так что мне больше не нужно вводить hg sum. Мой файл .bashrc теперь содержит это:

show_pending_changesets() {
  nb=$(hg sum | grep "update:" | sed 's/update: \([0-9]*\) .*/\1/');
  if [ `expr $nb + 1 2> /dev/null` ] ; then
    hg log -r tip -v -l $nb
  else 
    echo "Nothing new to report"
  fi ;
}
...
alias hgwhatsnew=show_pending_changesets

Объяснение: Я использую sed для извлечения количества наборов изменений из последней строки (которая начинается с update:) из вывода hg sum. Это число затем подается на hg log. Все, что мне нужно сделать, это набрать hgw и завершить его. НТН

...