2010-11-24 111 views
10

我使用Convert擴展將Subversion存儲庫轉換爲Mercurial。當我用Tortoise HG查看新的存儲庫時,我會在每個變更集中看到相應的源路徑和修訂(請參閱圖像)。 Tortoise HG Screenshot with HG Changeset and SVN source path/revisionSVN到HG:現在輸出HG更改集的SVN修訂版號

有沒有辦法將這兩個寫入控制檯?理想情況下,我想這樣的輸出:

hg:1147 svn:[email protected] 
hg:1146 svn:[email protected] 
... 

我知道,我可以使用hg log與模板選項自定義輸出,但不知道如何讓Subversion源路徑/修訂。

編輯: 它看起來像我想去的方式是不可能的。 svn源路徑/修訂版位於更改集(謝謝@ Ry4en)內的extras字段中,並且hg loghg export都不輸出此值。我現在嘗試是使用文件.hg/shamap結合

hg log --template 'hg:{rev} nodeid:{node}' 

要Mercurial的版本映射到SVN源路徑/修訂。

EDIT2: 我的Mercurial版本是1.4.3。 與Mercurial 1.7.1有可能使用這個命令(感謝@維姆·科嫩):hg log --template {node}\n{extras}\n\n

回答

3

它藏在一個關於變更命名extras領域,我不相信這是它一個日誌模板條目。它可能顯示在一個hg export中,你可以用它來grep它,它當然可以通過編程方式獲得,但我不認爲有一個--template的方法來獲取它。

+7

例如,您可以打印`extras`,嘗試`hg log --template {node} \ n {extras} \ n \ n`。 – 2010-11-24 20:28:35

+0

@Wim:當我輸入如你所寫的命令(加上模板字符串的單引號)時,我得到消息「No keyword'extra'」(注意缺失的s)。當我只使用'extra'而不是'extras'時,我得到日誌輸出,但只有節點id,沒有額外字段的值。 – 2010-11-25 09:44:05

9

新版本的hgsubversion添加了{svnrev}模板關鍵字。這在hg help subversion描述:

[...]

查找和顯示的Subversion版本

揭示水銀的變更和Subversion 修訂,hgsubversion提供了三種模板的關鍵字之間的關係:

svnrev Expanded to the original Subversion revision number. 
svnpath The path within the repository that the changeset represents. 
svnuuid The Universally Unique Identifier of the Subversion repository. 

舉例:

$ hg log --template='{rev}:{node|short} {author|user}\nsvn: {svnrev}\n' 

使用Mercurial 1.5或更高版本時,模板關鍵字可用。

對於從Subversion發現的變更,hgsubversion延伸revsets到 提供兩個新的選擇:

fromsvn Select changesets that originate from Subversion. Takes no 
      arguments. 
svnrev Select changesets that originate in a specific Subversion 
      revision. Takes a revision argument. 

例如:

$ hg log -r 'fromsvn()' 
$ hg log -r 'svnrev(500)' 

Revsets使用水銀1時是可用的。6或更高版本,並被幾個Mercurial命令接受 以指定修訂。有關詳細信息,請參閱「hg help 修訂版」。