2016-04-21 45 views
3

我正在編寫一個簡單的鉤子以檢查項目文件的語法。我只想在提交之前檢查語法。Mercurial避免擱置預掛鉤

我的問題是:當我做一個擱置時,Mercurial運行預先提交鉤子。語法檢查需要4-5分鐘。

我該如何避免在貨架上運行我的鉤子?

.hrgc線鉤:

precommit = python ~/tools/check_syntax.py $($HG root) 

我可以在我的check_syntax.py添加參數,如果它需要避免檢查。

+1

我不相信你能做到這一點。因爲它看起來像mercurial根據[這個答案](http://stackoverflow.com/a/30661561/6061947)激活那些與提交鉤子一起。你可能做的一件事就是讓它運行在'outgoing'上,然後纔會將更改推送到repo。 –

+0

我已經閱讀了鏈接的答案。我希望有一種方法可以在** pre-commit **鉤子中區分** hg commit **和** hg shelve **。但是你是對的,我應該對外送做我的驗證。謝謝。 – jedema

+0

檢查傳出是否太晚 - 提交已完成,可能不是最後的提交,而是導致問題的系列中的第一個。因此,無論如何,您最終都會提交「修復語法」提交或進行大量重寫更改。 – planetmaker

回答

3

你可以只覆蓋配置了這個特殊的命令調用:

hg shelve --config hooks.precommit= --name abcd

+0

感謝您的回答。我可以添加一行到**。hgrc **來定義默認行爲?編輯:不,那不可能。我必須使用shelve命令才能運行此配置參數。感謝訣竅:)我認爲這是最好的方式。 – jedema

+2

你可以爲'hg shelve --config ....'定義一個shell別名) – ikostia

+0

是的,我已經這麼做了。謝謝。 – jedema