Git:克隆gitosis admin repo本地

时间:2011-02-12 16:34:07

标签: git ubuntu gitosis

我使用以下指南在我的ubuntu 10.04服务器上设置了一个带gitosis的git repo: http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

它工作正常,花花公子,我可以将配置克隆到我的ubuntu 10.10台式计算机,并在那里提交更改。

多数民众赞成好,但我在服务器上完成了大部分实际编码。所以我需要在本地克隆配置/ gitosis-admin.git repo和其他repos。

git clone --local file:///home/git/repositories/gitosis-admin.git给了我:     致命:'/ home /git/repositories/gitosis-admin.git'似乎不是一个git存储库     致命:远程端意外挂断

我将我的服务器用户添加到组git并得到:     致命:未能打开'/home/git/repositories/gitosis-admin.git/objects':权限被拒绝

然后我尝试在服务器上创建公钥,并将其添加到密钥admin repo中,在配置中将用户名(用户)和(用户)@(主机名)添加到: git clone git @ localhost:gitosis-admin.git或git clone git @(hostname):gitosis-admin.git 这两个都要求我提供git @(主机名)密码

当我回到我的桌面,并查看gitosis-admin repo时,gitosis.conf列出:     [Gitosis的]
    [集团gitosis-admin]
    可写的gitosis-admin
    members =(desktopUN)@(desktopHostname)(serverUN)@(serverHostname)

但在服务器上,如果我根目录到/home/git/repositories/gitosis-admin.git/和cat gitosis.conf,它会列出     [Gitosis的]
    [集团gitosis-admin]
    可写的gitosis-admin
    members =(desktopUN)@(desktopHostname)

我无法理解这一点,我如何设置它以使其按照我想要的方式工作。在这一切背后我有一些菜鸟咳嗽的可能性很大,但是我花了5个小时试图让它现在起作用,我需要2分钟来设置一个svn回购。所以我变得不耐烦了..

由于

2 个答案:

答案 0 :(得分:2)

我想详细解答这个问题,因为我只需要使用gitosis-admin本地克隆来让其他人的安装正常工作。我认为其他用户可能会来这里寻求帮助,找出如果你需要编辑gitosis-admin怎么办,但只能对repos所在的文件系统进行本地root访问。如果你有这样的话在这里,你的直觉很好,因为你可以在本地克隆和编辑gitosis-admin存储库。但是,为了使一切运转起来,你必须要小心你的工作方式。以下是步骤:

前提条件:

  • 你是根。
  • 你想给$USER gitosis-admin访问权限; $USER是有效用户。
  • gitosis-admin存储库位于$PATH。 (在Ubuntu上,这通常是/srv/gitosis/repositories/gitosis-admin.git
  • $PATH归用户“gitosis”所有。

步骤:

  1. 如果他们还没有,请为要给予gitosis-admin访问权限的用户生成密钥对。
    sudo -H -u $USER ssh-keygen
  2. 将gitosis-admin repo的本地克隆作为gitosis用户。
    sudo -H -u gitosis git clone $PATH
  3. 添加新公钥。
    sudo -H -u gitosis cp ~$USER/.ssh/id_rsa.pub ./gitosis-admin/keydir/$USER.pub
  4. 根据需要编辑gitosis-admin conf。
    sudo -H -u gitosis nano ./gitosis-admin/gitosis.conf
  5. 作为gitosis用户提交。
    sudo -H -u gitosis git commit -am "Adding $USER" ./gitosis-admin
  6. 推动gitosis用户。
    sudo -H -u gitosis git push ./gitosis-admin
  7. 以gitosis用户身份运行更新后挂钩。
    sudo -H -u gitosis GIT_DIR=$PATH $PATH/hooks/post-update

答案 1 :(得分:1)

您需要在服务器上添加用户的ssh公钥以gitosis或将ssh私钥从桌面复制到服务器上的用户并使用它。

对不起,我有点撇开了这个问题。你是怎么安装gitosis的?我记得有一个常见问题,在安装过程中,gitosis-admin repo中的必需挂钩未设置为可执行。因此,它在推送到时不会更新配置。

此外,您应该只通过SSH而不是通过本地文件系统访问使用gitosis托管的repos,但您似乎已经考虑过这部分。

此外,如果你不知道,gitosis是不受维护和弃用的,而不是gitolite