2011-01-05 43 views
2

我正在使用普通的共享文件夾而不是HTTP使用Mercurial SCM,而我在運行自動更新掛鉤時遇到問題。Mercurial變更集掛鉤狀態存在-1

我已經輸入這個鉤子爲detailed in the FAQ。這將安裝掛鉤,但是當我的東西推到遠程存儲庫,我得到一個錯誤:

added 1 changesets with 1 changes to 1 files 
running hook changegroup: hg update >&2 
warning: changegroup hook exited with status -1 

another stackoverflow question與此類似,但它不提供其他解決方案比它可能是一個權限錯誤的地方。

有沒有其他人有這個問題,任何人都可以擺脫這個問題或給我一個關於從哪裏開始解決這個問題?謝謝。

+0

如果你在windows上,那麼'&&2'不適合你,這是一個bash shell-ism。 – 2011-01-05 18:18:27

+0

@ Ry4an:如http://support.microsoft.com/kb/110930中所述,它也可以用於Windows。 – 2011-01-05 18:38:09

+0

我記得很多windows用戶不得不刪除它以使其在過去工作,但也許他們的command.exe版本較差嗎?還是說,mercurial會調用掛鉤而不是通過輸出重定向來運行它?我沒有一個可以測試的Windows系統,但是我已經看到Windows人員必須刪除這個特殊的技巧。 – 2011-01-05 19:47:21

回答

3

hg在你的標準搜索PATH中嗎?

用自定義腳本替換您的.hgrc配置,例如,

[hooks] 
changegroup = /var/tmp/myscript.sh 

[ui] 
debug = true 

(UNIX)在/var/tmp/myscript.sh寫是這樣的:

#!/bin/sh 
set -e 
echo ---------- >>/tmp/myscript.log 
set >>/tmp/myscript.log 
echo --- >>/tmp/myscript.log 
pwd >>/tmp/myscript.log 
hg update >>/tmp/myscript.log 2>&1 

(UNIX)不要忘記標記爲可執行:chmod a+x /var/tmp/myscript.sh

(Windows)中的相應的批處理文件myscript.bat是:

@echo off 
echo ------ >>%TEMP%\myscript.log 
set >>%TEMP%\myscript.log 
echo --- >>%TEMP%\myscript.log 
cd >>%TEMP%\myscript.log 
hg update >>%TEMP%\myscript.log 2>&1 

(windows)of cou rse,.hgrc中的行是changegroup = \your\directory\myscript.bat

運行您的hg push命令來重現問題。

檢查/tmp/myscript.log文件的內容。

+0

不幸的是我使用的是Windows。 – 2011-01-05 23:31:41

+0

試試看__myscript.bat__腳本。輸出到__%TEMP%__。 – 2011-01-05 23:45:38