2009-04-18 48 views
0

我試圖讓我的網站在版本控制下。我使用ExpanDrive直接在服務器上工作,它使用MacFUSE將SFTP連接安裝爲本地卷,我可以通過終端和其他本地應用程序訪問本地卷。在遠程主機上工作時Git commit權限錯誤

總之,一切順利,直到我嘗試提交,當我收到這樣的信息:如果我嘗試手動運行exec命令

fatal: exec .git/hooks/pre-commit failed. 

,我看到:

-bash: /Volumes/1&1 Internet/website/.git/hooks/pre-commit: Permission denied 
-bash: exec: /Volumes/1&1 Internet/website/.git/hooks/pre-commit: cannot execute: Unknown error: 0 

我已經嘗試過使用我的SFTP客戶端提供.git目錄下的所有權限(777)權限,但仍然沒有運氣。有誰知道我可以嘗試的其他事情嗎?

回答

1

我最終在我的筆記本電腦上設置了本地開發環境,我放棄嘗試通過ExpanDrive使用git。在花費更多時間之後,似乎這些工具並不是一起工作的。

3

通過提供.git目錄下的所有完整(777)權限,您已啓用所有與Git一起提供的.git/hooks示例腳本,通常關閉它們的執行位。當您嘗試執行commit時,現在可執行的示例預提交腳本會嘗試運行以格式化提交作爲修補程序。

除非您正在嘗試這麼做,否則我建議您將chmod/git/hooks/*設置爲644,以便掛鉤腳本不會執行。

編輯 - 重置掛鉤權限可讓您回到首先遇到問題的位置。 接下來嘗試使用--no-verify標誌進行提交,該標誌應該繞過提交前掛鉤(並且還會對提交消息進行一些次要檢查)。這可能是一個解決方法,但我仍然不明白爲什麼你有最初的問題。代碼看起來非常直截了當 - 我不明白它如何在未啓用的情況下嘗試執行該鉤子。 如果以同樣的方式失敗,那麼我會認爲ExpanDrive/MacFuse系統沒有正確處理權限(但這不太可能)。

+0

感謝您的建議,不幸的是,我仍然在嘗試此操作後看到錯誤。 – 2009-04-20 00:53:14

+0

我認爲我的大腦已經在去機場的路上,當時我的手指還在鍵盤上。顯然重置權限只會讓你回到最初出現問題的地方。 – Paul 2009-04-20 03:49:13

1

我相信git的最新版本使用與啓用掛鉤的權限不同的機制。因此,如果您使用的是最新版本,則可以從.git/hooks目錄中移除所有內容(或將其移至其他位置),然後查看是否存在問題。

0

我有同樣的問題。我正在開發和測試一個單獨的開發服務器(devserver),而我的IDE(PhpStorm)在我的Macbook上。我正在使用ExpanDrive通過SFTP(SSH)在我的Mac上安裝devserver的webroot。當我試圖在我的Mac上使用Git時,我收到有關SHA1文件和其他內容的錯誤。

我已經這樣解決了它:

我已經在我的MacBook我的家目錄移動從安裝驅動.git目錄中/Volumes/devserver的位置。之後,我將舊位置指向.git目錄的新位置。我不得不使用../../Users/jeroen/###,否則鏈接不正確。

實例移動,使符號鏈接:

cd /Volumes/devserver 
mkdir -p /Users/$USER/Code/devserver 
mv .git /Users/$USER/Code/devserver/.git 
ln -s ../../Users/$USER/Code/devserver/.git ./git 
git status 

您使用「混帳」命令時,它可能需要一段時間的第一次,因爲Git是重建一些緩存。