2012-04-17 16 views
6

是否有可能知道何時從遠程存儲庫中提取某個提交,並使用Mercurial更新文件?獲取Mercurial中的提取和更新日期

更準確地說,我前幾天做了一個hg pull -u,現在我想知道這個pull是否只下載了最後一次提交,或者是否還有一些未提交的提交,從而使我最後一次提交讓他們也是如此。

hg log似乎給出了提交的日期,但沒有關於更新。這些信息在哪裏?

回答

8

此信息不由Mercurial記錄。 Mercurial存儲庫只是一個用於更改集的容器,Mercurial不存儲更改集進入存儲庫的方式(或何時)。

您可以爲此設置掛鉤,但您必須自己構建腳本。一個非常基本的系統將是

[hooks] 
pre-pull = (date; hg root; hg tip) >> ~/.pull-log 
post-pull = hg tip >> ~/.pull-log 

這將記錄當前日期,當前的存儲庫,以及當前尖端~/.pull-log只是每hg pull之前。拉動之後,記錄新的提示。您可以構建解析日誌文件的腳本來提取有關每次拉取操作的信息。

hg log似乎給提交的日期,但沒有關於更新

是,hg log只關心存儲的歷史記錄(變更)和工作的拷貝操作,例如更新不是一部分記錄的歷史。

最後,讓我提一下,這是我第一次見到有人要求提供「拉式日誌」。然而,相反的情況卻很常見:有一些腳本用於維護服務器上的「推送日誌」,以查看誰推送什麼以及何時推送。這由Mozilla等來完成。有關啓動說明,請參閱this README

+0

謝謝您的回答特定修訂標記運行這也適用,特別是給我的解決方案的理念,爲未來最終需求。非常好。 – nIcO 2012-04-17 12:21:13

+0

@nIcO:不客氣!我添加了一些關於pushlogs的內容 - 這是相反的概念。這將有望在未來對其他人有用。 – 2012-04-17 16:43:18

1

如果你想登錄時,用哪個版本汞柱更新來更新代碼,然後使用這些掛鉤:

[hooks] 
pre-update = (echo "---------------------------------"; date --rfc-3339=s; hg root; echo "pre-update:"; hg identify --id --branch) >> .hgupdates 
post-update = (echo "post-update:"; hg identify --id --branch) >> .hgupdates 

以上掛鉤產生這樣的日誌條目,每次汞更新運行:

2015-12-23 00:44:31+02:00 
/var/www/my/project 
pre-update: 
802120d1d3a0 somebranch 
post-update: 
302720d1d3d2 otherbranch 

當汞柱更新不(-r)設置