2011-06-27 52 views

回答

2

這可能是可能的,但有點棘手。你必須基本寫你自己的tag實用程序(也許作爲一個Mercurial擴展),以幫助收集所需的額外信息並對hg tag進行額外的調用。但是,在編寫擴展時,我對API沒有太多瞭解,所以我提供的任何想法都將基於直接使用命令調用hg

默認情況下,當您在主存儲庫上提交時,首先提交子存儲庫。然後,它需要新的變更ID爲每個subrepo並把它們在.hgsubstate文件中這樣的格式:

77ba00000fe8e9ca033d97dc07b85a50dd106837 nested 

遞歸標籤將需要得到.hgsubstate文件的內容,因爲它是在變更你正在主存儲庫中進行標記。你可能會想到hg revert,但這不是一個好主意,因爲它可以很容易地清理你的工作目錄(hg不喜歡在.hgsubstate上執行它)。你最好的選擇是修改hg export,並解析.hgsubstate文件中+行的結果差異。

然後,您將從每個這些人中獲取changset id和subrepo名稱,以便撥打hg -R <subrepopath> tag -r <id> <tag>。當然,最後標記主要回購。

這仍然有潛在的問題,你必須保持意識或弄清楚如何生活。例如:如果您在主要的回購倉庫中承諾但不在一個或多個subrepos上會發生什麼情況?現在,您在主要回購庫上有多個變更集,其中.hgsubstate在子索引中列出了相同的變更集標識。因此,如果您在主repo上標記兩個變量,則subrepo上的變更集將包含2個標籤。

我正在使用TortoisHg 2.0.5 w/Mercurial 1.8.4。自行標記子庫不會產生任何需要在主庫上進行提交的情況,它應該大部分工作正常。

相關問題