2016-11-08 46 views
0

有沒有合併來自幾個不同Mercurial存儲庫的更改日誌的方法?通過「合併」,我只是將其整合到一個顯示器中;這與源代碼控制意義上的合併無關。如何合併來自多個Mercurial存儲庫的日誌顯示

換句話說,我想一次在幾個不同的存儲庫上運行hg log。條目應按日期排序,無論它們來自哪個存儲庫,但限於最後的n天(可配置),並應包含所有存儲庫的所有分支中的條目。按照作者進行過濾並且在TortoiseHg這樣的圖形客戶端中執行此操作也不錯。有誰知道現有的工具或腳本會這樣做?或者,如果失敗了,是一種以編程方式訪問日誌條目的好方法? (Mercurial是用Python編寫的,這很理想,但我找不到任何關於這個簡單API的信息。)

背景:我們正在逐漸開始從SVN轉換到Mercurial。從一個服務器的角度來看,舊的存儲庫不僅僅是單一的,而且在所有項目中都有一個巨大的存儲庫(儘管存在明智的目錄結構)。我們新的Mercurial存儲庫更加專注!總的來說,這樣做效果更好,但是我們錯過了SVN的一個有用功能:能夠在存儲庫的根目錄下使用svn日誌來查看我們近期一直在努力的。這對於填寫時間表非常有用,給你一個目的感,等等。

+0

爲什麼downvote?我只問如何在一個地方總結這些信息以便顯示*,而不是回到基本的類似於SVN的工作方式。 –

回答

1

我想出了一個方法來做到這一點。簡而言之,我將所有修訂合併爲一個超級回購,然後我可以在TortoiseHG中查看。當然,這是一團糟,但最好能夠總結最近發生的事情。

我做這三個步驟:

  1. (可選)執行關於使用branchmap功能,每個分支重新命名originalreponame/original每個源庫hg convert。這使得稍後可以更容易地識別哪個修訂來自哪個源存儲庫。 (更忠實於SVN的是使用文件映射功能。)
  2. 在新的存儲庫上,運行hg pull -f以從單個存儲庫強制拉入一個較大的存儲庫。這可以在一個地方得到所有的修改,但它們以錯誤的順序顯示。
  3. 使用this answer中描述的方法創建另一個存儲庫,該存儲庫包含來自步驟2中創建的所有更改但按正確順序排序的存儲庫。 (其實我用微不足道的變種:我得到的散列和比較反對目的地的哈希值,檢查目標具有源的前綴,只有跨越複製新的。)

這是所有從Python腳本完成,但儘管Mercurial是用Python編寫的,但我只是使用命令行界面使用subprocess模塊。運行這三個步驟只會複製新的修訂版本,而不會從頭開始重新構建所有內容,除非您添加新的修訂版。

相關問題