我不是在我的Mercurial系統前面進行驗證,但我認爲問題在於Mercurial只考慮拓撲元首的.hgtags而不是分支元首。例如:
[1]---[2]---[5]---[6] Default
\ /
[3]---[4] Vendor
[6]是一個拓撲頭,[4]和[6]是分支頭。解決方案是在合併時保留對.hg標籤的所有更改。
編輯
這裏是我的測試。合併後直接接受本地.hg標籤,hg tags
僅在default
上顯示標籤。我無法更新到供應商標籤,這與您所看到的不同。我正在使用Mercurial 2.3.1。在供應商創建另一個變更集並製作第二個拓撲頭之後,重新出現缺失標籤。
和輸出:
C:\>hg init test
C:\>cd test
C:\test>echo 1>a
C:\test>hg ci -Am 1
adding a
C:\test>hg branch vendor
marked working directory as branch vendor
(branches are permanent and global, did you want a bookmark?)
C:\test>echo 1>b
C:\test>hg ci -Am 2
adding b
C:\test>hg tag v1
C:\test>hg update default
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
C:\test>hg tag d1
C:\test>hg merge vendor --tool internal:local
1 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)
C:\test>hg ci -m Merge
C:\test>hg tags
tip 4:80759c41b3cc
d1 0:17b05ed457d1
C:\test>hg update vendor
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
C:\test>hg tags
tip 4:80759c41b3cc
d1 0:17b05ed457d1
C:\test>hg update d1
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
C:\test>hg update v1
abort: unknown revision 'v1'!
C:\test>hg update vendor
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
C:\test>echo 1>c
C:\test>hg ci -Am 3
adding c
C:\test>hg tags
tip 5:a2c0fe73a9f1
v1 1:3168d0f4e5e5
d1 0:17b05ed457d1
C:\test>hg update v1
0 files updated, 0 files merged, 2 files removed, 0 files unresolved
C:\test>hg update d1
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
這將是有意義的,但如何將產生的行爲,其中水銀讓我更新到與其他標籤中的一個(不產生「沒有這樣的標記「錯誤),而實際更新到該分支的提示? – DNS
我添加了一個確認我猜對的行爲的例子。你能重現你所看到的行爲並更新你的問題嗎?不過,答案是通常合併.hg標籤。這是標準的事情。 –