2011-05-01 51 views
10

我有一個Mercurial存儲庫,有幾個人從他們自己的本地存儲庫中推送。我想能夠查詢中心資源庫的所有的更改在過去24小時內到達該倉庫,特別是不僅僅是變化那名在過去24小時內提交在Mercurial中,我如何在過去的24小時內將修訂版本推送到回購協議中?

hg log --date選項不會做我需要的。它只根據提交日期來改進選擇。因此,hg log --date -1從昨天開始,我修改了自己的修訂版本,但沒有修改承諾,比如三天前,但只有今天被推送到此回購

如果我能找到不到24小時前到達回購庫的最早修訂版本的修訂版號(或ID),那就可以做到這一點;但我什麼也看不到 - 即使在hg幫助轉換 - 看起來像它會工作。

回答

10

您可以使用pushlog,您配置服務器端的Mercurial擴展。

基本上你會安裝必要的文件,並配置服務器存儲庫掛鉤以便在每次推送時調用pushlog,然後腳本會在有人推送到該存儲庫時記錄日誌。

不幸的是,我不知道更多關於它的內容,我詢問了Mercurial的IRC頻道,並在那裏得到了那個名字。

你可以在這裏看到一個日誌的例子:calc pushlog

此外,還有可用於包含此類日誌的Web系統。這是我的Kiln日誌在今天的變化之後的樣子。

Kiln activity log

+0

這很酷,而且比我的想法更自動化! – 2011-05-01 22:15:56

+1

感謝指向[pushlog](http://kenai.com/projects/sonichg/pages/Pushlog)的指針。它並不完全符合我的需求 - 我真正想要的是一種回顧性的方式,而不僅僅是「前進」 - 但這聽起來像是一個有用的工具箱。 – 2011-05-07 22:34:56

1

我不知道一個內置的方法來做到這一點,但你可以以迂迴的方式獲得這些信息。寫一個腳本來克隆你的主要回購每天,並相應地命名它;說project1-2011-4-31,project1-2011-5-1\。然後,它就是從一個輸入到另一個看到的一個簡單的問題:

cd %projectdirectory%\dateclones 
cd project1-2011-3-25 
hg incoming ..\project1-2011-5-1 

會給你當project1-2011-3-25克隆和project1-2011-5-1克隆之間被推所有更改。

+0

您不必每次都複製整個回購。只需重複使用'hg pull'。它會告訴你它爲本地回購添加了多少變更集。 – Ringding 2011-05-03 08:16:31

+0

這給了我一個有趣的想法!實際上,我確實有一個每日克隆的回購數據可以追溯到幾個月。 (我們將克隆作爲日常構建過程的第一步,並且從來沒有任何理由從磁盤中刪除舊克隆。)接下來,我可以讓每日構建在樹的頂端添加一個標記;那麼我的查詢可以只是'今天的標籤'與昨天的'hg log'。對於歷史來說,遍歷所有舊的克隆將非常簡單,在每個克隆中找到tip rev並標記它。 – 2011-05-07 22:44:21

+1

標籤通常在歷史中(添加一個標籤創建一個提交),所以任何嘗試@ TimRuddick解決方案的人都應該考慮對'hg tag'使用'-l'參數,這會使它們變爲本地和不符合歷史記錄。 – Kevin 2015-06-21 01:17:28

相關問題