2015-01-07 34 views
2

我想添加一個鉤子到我的倉庫。我無法弄清楚我需要放置鉤子文件的位置。該hgrc文件如下:如何在windows上編寫mercurial鉤子?

[hooks] 
precommit.test = precommithook 

位置爲C:\代碼\ RepoTest.hg \ hgrc

掛鉤文件是:

echo "hello world" 

位置爲C:\代碼\ RepoTest。汞\ precommithook

當我運行

汞commi牛逼-m命令行「測試」

我得到

running hook precommit.test: precommithook 
'precommithook' is not recognized as an internal or external command, 
operable program or batch file. 
abort: precommit.test hook exited with status 1 

我已經試過各種路徑,但沒有任何工程。

我對Google Mercurial hooks的大多數例子都是基於Unix的。

是否有可能在PowerShell中編寫鉤子?

+1

我藉此它的批處理文件?你一定有.bat擴展名嗎?從你的例子中不清楚,我不想假設。 – Nanhydrin

+0

它可能是一個批處理文件。我已經添加了.bat擴展名,但我必須添加到達文件的完整路徑。 C:\ Code \ RepoTest \ .hg \ precommithook.bat無論如何圍繞此? –

+0

相對路徑可能是:precommit.test =。\ precommithook.bat。您可以使用的路徑將取決於命令運行的路徑,可能會將%CD%變量的回顯添加到批處理文件中,以查看其認爲正在運行的位置,然後可以幫助確定需要使用的路徑。 – Nanhydrin

回答

2

根據Hooks doc,hook必須在給定的環境程序中可執行,它沒有預定義的位置,但必須由OS找到。

這樣:

  • 對於純粹的Windows,吊鉤必須命名爲precommithook.bat
  • 必須放入目錄$ PATH中或鉤定義

正如結果所使用的完整路徑,與

precommit.test = z:\precommit.bat in hgrc

@echo off

echo Hello World在Z:\ precommit.bat

我已經提交嘗試

>hg commit -m "Edits" 
Hello World 
+0

你知道我怎樣才能讓bat文件返回狀態1,所以我可以中止提交嘗試? –

+0

@AlP'exit/B 1',也請閱讀http://www.manageengine.com/products/desktop-central/returning-error-code-on-scripts-how-to.html http:// steve-jansen .github.io/guides/windows-batch-scripting/part-3-return-codes.html瞭解更多詳細信息 –