2012-09-28 103 views
1

這可能是愚蠢的東西,但四處搜索我一直無法找到答案。 我正在嘗試爲我的git項目設置預提交鉤子,使腳本可以與源代碼一起版本化。無法符號鏈接到.git目錄

似乎符號鏈接是支持和爲此的方式。當我嘗試使用.git目錄中的任何內容時,我收到錯誤「沒有這樣的文件或目錄」。 .git目錄的設置方式有什麼奇怪的地方嗎?我現在通過Windows上的cygwin來做這件事,以防萬一。

例如,我使用的設置符號鏈接腳本的樣子:

#/bin/bash 

HOOK_NAMES="pre-commit post-commit" 
THIS_SCRIPT_DIR=$(dirname $0) 
HOOK_DIR=$THIS_SCRIPT_DIR/../.git/hooks 

for hook in $HOOK_NAMES; do 
    ln -s -f $THIS_SCRIPT_DIR/git-hooks/$hook $HOOK_DIR/$hook 
done 

感謝,

====

跟帖:這確實出現了一個問題與Cygwin,雖然我一直無法找到解釋它的文檔。這在Linux和OS X上運行良好。Cygwin在隱式隱藏文件夾(。前綴)中創建符號鏈接時遇到問題。如果有人知道我爲什麼會高興地將這個解釋標記爲答案。

回答

1

看起來您正在嘗試從存儲庫本身符號鏈接.git/hooks。我不認爲這是Git支持的,它會解釋你遇到的錯誤。

This answer建議其他方法,其中大多數建議轉向其他方式(具有.git/hooks符號鏈接)。你可能會找到一個最適合你的人。

+0

這不是鉤子目錄,但具體文件。例如git-project/Scripts/git-hooks/pre-commit - > git-project/.git/hooks/pre-commit。但我認爲這實際上就是你所說的,反正你的鏈接中有什麼建議。我可以將我正在使用的腳本粘貼到我的答案的編輯版本中,以使其更清晰(或者更清楚地表明,我沒有按照我的想法做我的:P) –

2

我不知道爲什麼這在Cygwin中不起作用(對我來說看起來像是一個bug),但如果其他人有相同的問題,我可以通過從裏面創建符號鏈接來解決它。 git文件夾。因此,例如,在命令行中,你會去的.git /掛鉤文件夾:

> cd .git/hooks 

,然後創建鏈接

> ln -s ../../git-hooks/pre-commit pre-commit