ртутный журнал изменений в объединенных именованных ветвях, но не в нем - PullRequest
5 голосов
/ 21 декабря 2010

Я хочу иметь возможность получать «журнал hg» каждого набора изменений, который появляется на графике между changeset1 и changeset2. Я не могу найти способ сделать это без a) пропуская узлы в именованных ветвях, которые объединены между changeset1: changset2 или б) включая узлы в именованных ветвях, которые НЕ являются предками changeset2

Вот "hg glog" простого примера с 2 именованными ветвями плюс ветвь по умолчанию. Одна именованная ветвь объединяется, и поэтому ее узлы релевантны, а другой не имеет значения:

@    changeset:   5:e384fe418e9b
|\   tag:         tip
| |  parent:      2:7dc7af503071
| |  parent:      3:0a9be59d576e
| |  summary:     merge somefeature branch into default
| |
| | o  changeset:   4:4e8c9ca127c9
| | |  branch:      unmerged_feature
| | |  parent:      1:ef98ad136fa8
| | |  summary:     change that is not merged into ending changeset
| | |
| o |  changeset:   3:0a9be59d576e
| |/   branch:      somefeature
| |    parent:      1:ef98ad136fa8
| |    summary:     changed b.txt
| |
o |  changeset:   2:7dc7af503071
|    summary:     changed a.txt
|
o  changeset:   1:ef98ad136fa8
|  summary:     added b.txt
|
o  changeset:   0:271b22b4ad30
   summary:     added a.txt

Я хочу команду log, которая даст мне все узлы, которые являются потомками Rev 0 и предков Rev 5. Это все, кроме Rev 4.

Я могу получить слишком много информации:

hg log -r 0:5 --template "{rev}:branch={branches},desc={desc}\n"

Это дает мне запись в журнале для Rev 4, которая не является предком Rev 5:

0:branch=,desc=added a.txt
1:branch=,desc=added b.txt
2:branch=,desc=changed a.txt
3:branch=somefeature,desc=changed b.txt
4:branch=unmerged_feature,desc=change that is not merged into ending changeset
5:branch=,desc=merge somefeature branch into default

Я могу получить слишком мало информации:

hg log -b default -r 0:5 --template "{rev}:branch={branches},desc={desc}\n"

пропускает версию 3, которая является потомком версии 0 и предком версии 5

.
0:branch=,desc=added a.txt
1:branch=,desc=added b.txt
2:branch=,desc=changed a.txt
5:branch=,desc=merge somefeature branch into default

1 Ответ

6 голосов
/ 21 декабря 2010

Если вы используете более новую версию Mercurial (1.6.0 или выше), вы можете использовать функцию revsets . В этом случае вам нужен оператор ancestors ():

hg log --rev ancestors(5)

См. hg help revsets для получения дополнительной информации.

...