我是gitolite的新手。我试图用gitolite做一个非常简单的测试。我已经设置了名为“test_repo”的存储库。请注意,我没有修改任何其他内容,除了我在下面说明的内容。我可以在gitweb看到这个回购。这是repo配置
repo test_repo
RW+ = @all
现在我要克隆这个回购。我有ldap访问服务器。根据我对@all的理解,它应该允许我这样做。
当我发出
时git clone git@myserver:repositories/test_repo.git
#I know this is wrong. But I just wanted to test as the above did not work
或
git clone git@myserver:test_repo.git
要求输入密码。我已按照本指南http://sharadchhetri.com/2013/05/31/how-to-create-own-git-server-with-gitolite-and-gitweb-in-ubuntu/进行操作,该指南未为git用户设置密码
当我发出
时 git clone myname@myserver:test_repo.git
我收到以下错误
fatal: 'test_repo.git' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我也厌倦了克隆默认仓库“test_repo.git”。但我得到了同样的错误。
我也累了这个
git clone myname@myserver:/home/git/repositories/testing.git
然后克隆工作正常。但是,当我git push -u origin master
我正在获得一些修改过的文件时
error: insufficient permission for adding an object to repository database ./objects
fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
! [remote rejected] master -> master (n/a (unpacker error))
注意:我没有在配置文件中添加任何用户
感谢任何帮助。
答案 0 :(得分:2)
git clone myname@myserver:/home/git/repositories/testing.git
应该做些什么:
git clone git@myserver:test_repo.git
or
git clone git@myserver/test_repo.git
你不应该指定'repositories'文件夹(gitolite知道repo应该在哪里)
假设ssh -Tvvv git@myserver
有效(即不要求密码)
首先使ssh工作,然后再次尝试git clone
。
正如我在评论中所说,LDAP 和 ssh都是身份验证机制,因此您可以使用一个或另一个,而不是两者:
如果ssh有效,但是克隆不起作用,那么你需要查看~git/.gitolite/logs
我在日志中找不到任何有用的东西。此外,我做了
tail -f
的日志文件。当我尝试克隆时,它甚至没有更新。
这意味着问题出在ssh级别,而不是正确调用gitolite :这是~git/.ssh/authorized_keys
,如果直接手动添加ssh密钥就会发生,而不是通过keys
repo的gitolite-admin
文件夹添加并将该repo推回到gitolite服务器(触发所述~git/.ssh/authorized_keys file
的更新)。
我认为这可能就是原因。我不知道刚刚发生了什么。我甚至可以在管理服务器中克隆
gitolite-admin
(这在以前工作) 我将重新安装所有东西(因为我觉得我现在搞乱了配置文件)。
答案 1 :(得分:1)
试试
ssh git @ hostname-or-ip
这不应该问密码;它可以问密码。这也将发出您有权访问的存储库列表。
BTW - git clone命令中的用户名@ localhost严重错误