Gitolite 複製未按預期工作
我正在執行一個 Debian 系統,並且最近使用 DEB 包安裝了 gitolite。
這是我的問題:
我試圖複製 gitolite-admin.git 儲存庫(用於為您希望 gitolite 為您管理的所有儲存庫配置 gitolite 安裝)。
我的第一次嘗試正是說明中的說明:
git clone gitolite@server:gitolite-admin
我收到以下錯誤:
fatal: 'gitolite-admin' does not appear to be a git repository fatal: The remote end hung up unexpectedly
注意:如果我用 gitolite-admin.git 替換 gitolite-admin,也會發生同樣的事情,
但是當我執行以下操作時:
git clone gitolite@server:~/repositories/gitolite-admin.git
此行成功將儲存庫複製到我的本地工作站。
現在,我將額外的文本添加到文件路徑中沒有問題,但是文件告訴我這是不正確的。
以下連結(http://sitaramc.github.com/gitolite/doc/3-faq-tips-etc.html)指出“在 git clone 中的 repo 名稱的開頭添加 repositories/”是一個常見錯誤/錯誤。它還指出“事實上 gitolite 在內部預先添加了 $REPO_BASE,所以你也不應該做同樣的事情!”
我的 .gitolite.rc 文件包含 $REPO_BASE 的以下行:
[Located in /home/gitolite/.gitolite.rc] $REPO_BASE="repositories";
我的問題是,我的配置有什麼問題,導致 $REPO_BASE 不在我的 git 複製之前?
如果您需要任何進一步的資訊,請發表評論說明您需要什麼資訊,我將很樂意為您服務。
其他注意事項:
- git版本:1.7.2.3
- gitolite 版本:1.5.4-2~bp(這是來自 lenny-backports,因為我使用的是 Debian Lenny 而 gitolite 不是 Lenny 的標準配置)
- Debian 的安裝會創建使用者“gitolite”來管理 gitolite 儲存庫。
能夠訪問
gitolite@server:~/repositories/gitolite-admin.git
,但不能gitolite@server:gitolite-admin
表示您沒有“通過” Gitolite,而只是使用基於 SSH 的普通訪問 gitolite 使用者。如果
ssh gitolite@server echo normal access
yieldnormal access
,那麼您使用的密鑰不僅限於通過 Gitolite。如果您正在通過 Gitolite,您會看到類似bad command: echo normal access
.如果您有一個用於 SSH 到 gitolite 使用者本身的密鑰,並且您嘗試使用相同的密鑰作為 Gitolite 使用者進行身份驗證,則可能會發生這種情況。gitolite 中將出現一個“正常訪問”密鑰,
.ssh/authorized_keys
沒有任何特殊前綴。配置為通過 Gitolite 的密鑰行將以command="/path/to/gl-auth-command gitolite-username",…
.如果您需要對 gitolite 使用者的正常基於 SSH 的訪問和基於 Gitolite 的訪問,那麼您應該為這些目的設置單獨的密鑰,以便您可以指定要在文件
IdentityFile
中的選項中使用哪個密鑰.ssh/config
(也許IdentitiesOnly
如果您發現ssh使用“錯誤”密鑰只是因為您已經在ssh-agent中載入了它)。例如:
使用您的“預設”密鑰之一(ssh的預設值之一(例如
~/.ssh/id_rsa
)或您通常在ssh-agent中載入的某些密鑰)來訪問 Gitolite(即您在活動中擁有公鑰keydir/your-gitolite-user-name.pub
)。生成
~/.ssh/gitolite-user
用於直接登錄 gitolite 使用者。用於ssh -i ~/.ssh/gitolite-user gitolite@server
登錄。或者,將自定義條目添加到~/.ssh/config
:Host gitolite-user User gitolite HostName server IdentityFile ~/.ssh/gitolite-user IdentitiesOnly yes
所以你可以
ssh gitolite-user
登錄。