Ртутный журнал изменений на объединенных именованных ветвях, но не в нем
Я хочу иметь возможность получить "журнал hg" каждого набора изменений, который появляется на графике между changeset1 и changeset2. Я не могу найти способ сделать это без а) пропуска узлов в именованных ветвях, которые объединены между changeset1:changset2 или b) включая узлы в именованных ветвях, которые НЕ являются предками 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"
пропускает rev 3, который является потомком rev 0 и предком rev 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 ответ
Если вы используете более новую версию Mercurial (1.6.0 или выше), вы можете использовать функцию revsets. В этом случае вам нужен оператор ancestors():
hg log --rev ancestors(5)
Увидеть hg help revsets
для дополнительной информации.