Как показать различия, специфичные для названной ветви в Mercurial - PullRequest
26 голосов
/ 19 января 2011

Предполагая, что у меня есть именованная ветка foo с двумя коммитами a, b:

      a       b       c  
------o-------o-------o------- # default
       \          d         e
        ----------o---------o  # branch foo

Я хочу увидеть разницу между a и e (a не включена).Конечно, я мог бы использовать идентификатор ревизии, но это не очень практично.В git можно сделать git diff master..foo.Как я могу сделать то же самое в HG?

Ответы [ 4 ]

33 голосов
/ 19 января 2011

Вы можете сделать это, используя revsets .

. В вашем конкретном примере я думаю, что вы можете получить список из d и e, используя:

hg log -r "branch('foo') - branch('default')"

где это - определяется как:

"x - y"
      Changesets in x but not in y.

Получение различий от a к e может быть сделано как:

hg diff -r "ancestor(default, foo)" -r foo

, хотя для этого есть сокращениеЯ не вижу.

12 голосов
/ 03 мая 2012

Другой способ сделать это, полезный также для веток, которые вы уже слили с настройками по умолчанию:

hg diff -r "max(ancestors(foo) and branch(default)):foo"

Хотя это может быть просто болью, поэтому я бы порекомендовал создать псевдоним, добавив что-то вроде:

[alias]
branchdiff = diff -r "max(ancestors('$1') and branch(default)):'$1'"

На ваш Mercurial.INI / hgrc, который вы затем можете использовать следующим образом:

hg branchdiff <branch name>

или

hg branchdiff .
1 голос
/ 12 августа 2014

Если вы хотите журналы только из текущей ветки:

hg log -b.

0 голосов
/ 20 февраля 2017

разница между ветвями:

hg diff -r <branchname_1>:<branchname_2>

показать последнюю фиксацию текущей ветви:

hg log -r .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...