2011-02-12 132 views
1

我有一個問題,gitosis和gitolite,我花了很多小時研究無濟於事。密切關注這兩種產品的安裝說明後,常見症狀是目標庫中不被位於正常通過的gitosis/gitolite:Gitosis/Gitolite設置

這種失敗:

$> git clone [email protected]:testing 
Cloning into testing... 
fatal: 'testing' does not appear to be a git repository 
fatal: The remote end hung up unexpectedly 

雖然這個工程:

$> git clone [email protected]:~/repositories/testing 
Cloning into testing... 
warning: You appear to have cloned an empty repository. 

因此,指定完整路徑的作品,但這將表明,我們不通過gitosis/gitolite運行。

問題的另一個可能相關的症狀是,當我在安裝後通過ssh連接到服務器,我的連接與此消息凍結:

$> ssh [email protected] 
PTY allocation request failed on channel 0 

而且,當我執行「SSH gitolite @例子。 com info「,我不斷得到GNU信息而不是gitolite的信息(如果我在服務器上運行'/ usr/local/bin/gl-auth-command kreeble'作爲gitolite,我可以得到這些信息。我已經證實,在用戶gitolite的.ssh目錄,authorized_keys中只有一個入口這使我通過gitolite命令:

command="/usr/local/bin/gl-auth-command kreeble",no-port-forwarding,\ 
    no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa long_key_base64_here \ 
    [email protected] 

爲什麼我不會與gitolite提示提交任何想法? 我將不勝感激這個問題的任何想法,謝謝!

回答

1

我剛剛發生了這個問題。我發現奇怪的是,我只是在一臺Mac OS X機器上成功安裝gitolite,並且在另一臺Mac OS X機器上使用相同的設置失敗。當我嘗試克隆gitolite-admin時,我的特殊問題是相同的,但是在嘗試'ssh git @ localhost info'時,它會返回gnu信息而不是gitolite信息。在文檔中它說這個問題是由於在服務器上使用錯誤的密鑰導致gitolite被繞過。

再看看我的問題,情況並非如此。 Gitolite被稱爲罰款,實際上使用-vvv作爲ssh命令的一部分顯示了這一點。我的問題是,幾個月後,嘗試使gitosis或gitolite工作(我不記得是哪個),我修改了/etc/sshd_config並添加了'ForceCommand/usr/local/bin/ssh_session'底端。

的,內容是是:

#!/bin/bash 
export SSH_SESSION=1 
if [ -z "$SSH_ORIGINAL_COMMAND" ] ; then 
    export SSH_LOGIN=1 
    exec login -fp "$USER" 
else 
    export SSH_LOGIN= 
    [ -r /etc/profile ] && source /etc/profile 
    [ -r ~/.profile ] && source ~/.profile 
    eval exec "$SSH_ORIGINAL_COMMAND" 
fi 

這最終導致ssh來繞過一些用於gitolite的路徑,讓他們diredtly去外殼。既然它有可能是我在較舊的嘗試中嘗試過使gitosis或gitolite起作用,那麼其他人也可能以前也嘗試過這種方法,並且現在因此而出現此錯誤。

+1

另外,畢竟這一點,我不得不添加的路徑gitolite(在我的情況在/ usr/local/bin目錄),以對.bashrc中服務器上的Git用戶。 – 2011-06-22 14:03:33

1

我只知道gitosis,這是gitolite的前身,問題必須相同。在我想出來之前,我經歷過同樣的問題。

如果沒有安裝gitolite,通常git會在〜git中安裝存儲庫,但是〜gitolite會在例如git中安裝repos。 〜/ gitolite /庫/ testing.git。

這是我的理解,需要.git後綴需要。

[email protected]:測試需要您到〜gitolite/repositories/testing,但我猜測代碼是以這樣一種方式編寫的,它認爲repo必須命名爲tests.git。所以它認爲這是一個錯誤。

[email protected]:〜/庫/測試繞過這個URL重寫規則,但我的猜測是,它再次尋找〜Gitosis的/庫/ testing.git。

這個時候,錯誤處理似乎是一個不同的代碼。我認爲,當它沒有找到tests.git時,它被編碼爲返回一個空的回購。

如果你簡單地添加git的後綴,所有的問題都會消失。至少這是我的gitosis經驗。

祝你好運。

+0

注意,中央回購「testihng.git」文件夾被克隆/拉爲「測試」文件夾作爲本地回購。 – Yoichi 2011-07-09 05:08:40