我需要一個mercurail模板/關鍵字「主機名」來獲取回購所在計算機的名稱(或IP)。就我讀過的wiki而言,即「第11章定製Mercurial的輸出」,hg幫助模板和網絡,我認爲它應該與date關鍵字類似,動態擴展。我怎樣才能定義我自己的模板/關鍵字?Mercurial,定義我自己的模板/關鍵字:主機名
謝謝檸多
我需要一個mercurail模板/關鍵字「主機名」來獲取回購所在計算機的名稱(或IP)。就我讀過的wiki而言,即「第11章定製Mercurial的輸出」,hg幫助模板和網絡,我認爲它應該與date關鍵字類似,動態擴展。我怎樣才能定義我自己的模板/關鍵字?Mercurial,定義我自己的模板/關鍵字:主機名
謝謝檸多
無論是存儲庫是本地機器(然後你就可以用hg root
的絕對路徑),並通過正常的系統工具查詢名稱。你可以在你的模板還嵌入那些:
$ hg log -r. --template="{branch}-{rev} from $(hostname) running debian $(cat /etc/debian_version)" trunk-22248 from MYHOSTNAME running debian 8.2
或者你已經知道的URL(遠程路徑),以便當你需要指定它作爲參數傳遞給HG拉/克隆/去用它來操作/ incoming
如果未在命令行中明確指定遠程URL,它將在[path]部分的.hgrc中指定。根本沒有遠程存儲庫時,通常在那裏定義default = URL
。
如果需要打印的URL,然後安裝掛鉤克隆,拉和推(也許呼出和呼入),它打印這些鉤子提供的$ URL - 或者只是changegroup鉤。檢查http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html#sec:hook:changegroup和hg help config
。
下面的擴展應該做的伎倆:
from mercurial import templatekw
testedwith = "3.5"
_ipname = None
def showipname(repo, ctx, templ, **args):
""":ipname: String. The hostname of the machine that the repository
resides on."""
import socket
global _ipname
if not _ipname:
_ipname = socket.gethostname()
return _ipname
def uisetup(ui):
templatekw.keywords["ipname"] = showipname
然後使用(比方說):
hg log -r . -T '{node|short} at {ipname}\n'
注意的socket.gethostname()
價值可能取決於你的互聯網連接。如果您需要/etc/hostname
或其他可識別您機器的值,請改用該方法。
使用擴展,把它放在一個文件,說ipnametempl.py
某處,然後將下面的行添加到您的.hgrc
:
[extensions]
ipnametempl=/path/to/ipnametempl.py
這可以是您的用戶/全球hgrc
或在你的倉庫中.hg/hgrc
(後者如果你只想爲特定的存儲庫啓用它)。請參閱hg help hgrc
以找出用戶/全局文件在您的系統上的位置。
嗨雷默,聲音很好。我在哪裏必須放置這個擴展,在我的回購中的某處,或者在我的Windwos上安裝了TortoiseHG的地方的某處? –
@RolandSchmitz:我已經更新了我的答案來解釋這部分。 –
哇,這就是我一直在尋找! –