2010-12-02 53 views
2

我想知道是否有辦法自動標記變更集,因爲它是在本地提交或推送到窯庫時提交的。當提交或推送到窯時自動標記變更集

我希望每個變更集都有一個帶有版本/內部版本號的標籤。我打算將我的版本/內部版本號存儲在數據庫中,並希望腳本從數據庫中檢索此值並向變更集添加標籤。是否可以自動調用腳本將其作爲提交後事件或推送到窯庫時作爲推後事件?

我也接受任何其他方法來實現每個提交/推送自動標記。

+0

同樣在窯StackExchange:http://kiln.stackexchange.com/questions/2602/automatically-tag-changesets當承諾或推送到窯 – tghw 2010-12-02 22:28:02

回答

8

而不是爲每個變更標籤,爲什麼不嘗試以下操作之一:

  • 使用變更散列作爲你的標識?
  • 使用從日誌生成的字符串作爲標識符(見下文)?

    hg log -r 1.7.2 --template '{latesttag}-{latesttagdistance}-{node}\n' 
    

    結果採用以下形式::

甲描述字符串可以從日誌使用該命令來產生

<latest tag>-<# changesets since latest tag>-<changeset hash> 

例如,在我的本地的水銀回購的克隆,這生成:

1.7.2-2-5e51254ad4d4c80669f462e310b2677f2b3c54a7 

這告訴我從標記1.7.2開始有兩次提交,當前變更集的散列是5e51254a。

在Mercurial中,每個標籤創建一個新的變更集。因此,如果您標記每次提交,則會使回購中的變更集數量加倍。您應該使用內置工具(如上所述),而不是嘗試重新創建輪子。

+0

+1有趣的方法!儘管如此,我會使用`{short}`而不是`{node}`來保持版本描述符的長度易於管理。 – 2010-12-03 11:19:47

1

我想知道是否有辦法自動標記變更集,因爲它是在本地提交或推送到窯庫時提交的。

你總是可以寫一個post commit鉤子來做到這一點。

我希望每個變更集都有一個帶有版本/內部版本號的標籤。

標籤對識別提交歷史記錄中的重要時刻非常有用。爲這些時刻提供一個與產品開發相關的有意義的名稱,如版本1.0,版本1.3等。

如果您要爲每個更改設置一個標籤,那麼您只會增加噪音水平。您仍然需要將重要標籤的信息保存在某個地方。

將標記視爲關於變更集的元信息。並不是所有這些都值得同樣重要。並非所有人都需要這些元信息。

只有當您謹慎使用它們時,查看標籤才能爲您提供有意義的歷史記錄。

在鉤

參見:

範例:運行AFTE已經通過推,拉或解捆添加了更改組。我用它來觸發自動構建。

[hooks] 
changegroup.yyyy = command 

類似地,這裏的post-commit,推後鉤

[hooks] 
post-<command> = command