2010-12-20 68 views
5

我希望能夠獲得 changeset1和changeset2之間的圖表中出現的每個變更集的「hg日誌」。我無法找到一個方法來做到這一點沒有任何 一)漏掉了一個名爲分支是changeset1之間合併的節點:或b)包括一個名爲分支機構未changeset2合併命名分支上的變更日誌的mercurial日誌,但不是未合併的

這裏的祖先節點changset2 是一個「汞出入記錄」一個簡單的例子有兩個命名分支加上默認分支。一位叫分支被合併,所以它的節點是相關的,另一種是不相關的:

@ 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 

我想日誌命令會給我所有的都轉0的後代和轉5的祖先這是節點除了轉一切4.

我能得到太多信息:

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

這讓我對第4版日誌條目,這是不轉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中,這是第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 

回答

6

的REV 0的後代和祖先(1.6.0或更高),則可以使用revsets功能。在這種情況下,你需要的祖先()操作:

hg log --rev ancestors(5) 

更多信息請參見hg help revsets

+0

謝謝。我以前從未見過。我真正想要的是:hg log --rev'ancestors(changeset2)和decendants(changeset1)' – 2010-12-20 22:36:39

+3

實際上,它看起來像雙冒號會做我想要的更簡單:hg log --rev'changeset1 :: changeset2' – 2010-12-20 22:40:54

+3

是的,你想要'X :: Y'語法 - 我把它放在這個目的:-) – 2010-12-30 10:11:56