1

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

它工作得很好而且很漂亮,我可以将配置克隆到我的 ubuntu 10.10 台式计算机,并在那里提交更改。

没关系,但我在服务器上进行了大部分实际编码。所以我需要在本地克隆 configuration/gitosis-admin.git 存储库和其他存储库。

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':权限被拒绝

然后我尝试在服务器上创建一个公钥,并将其添加到密钥管理存储库中,将用户名添加为配置中的 (user) 和 (user)@(hostname) 到: git clone git@localhost: gitosis-admin.git 或 git clone git@(hostname):gitosis-admin.git 两者都要求我输入 git@(hostname) 密码

当我回到我的桌面并查看 gitosis-admin 存储库时,gitosis.conf 列出了: [gitosis]
[group gitosis-admin]
writable gitosis-admin
members = (desktopUN)@(desktopHostname) (serverUN)@(服务器主机名)

但是在服务器上,如果我进入 /home/git/repositories/gitosis-admin.git/ 和 cat gitosis.conf,它会列出 [gitosis]
[group gitosis-admin]
writable gitosis-admin
members = (desktopUN)@(桌面主机名)

我无法理解这一点,我该如何设置才能让它以我想要的方式工作。我很有可能在这一切背后有一些菜鸟咳嗽,但我已经花了 5 个小时试图让它现在工作,而且我需要 2 分钟来建立一个 svn 回购。所以我越来越不耐烦了..

谢谢

4

2 回答 2

2

我想详细回答这个问题,因为我只需要使用 gitosis-admin 本地克隆来让其他人的安装正常工作。我认为其他用户可能会来这里寻求帮助,以找出如果您需要编辑 gitosis-admin 但只有本地 root 访问权限以访问存储库所在的文件系统的情况。如果这就是您到达这里的方式,那么您的直觉很好,因为您可以在本地克隆和编辑 gitosis-admin 存储库。但是,要使一切正常运行,您必须小心操作方式。以下是步骤:

前提条件:

  • 你是根。
  • 您想授予$USERgitosis-admin 访问权限;$USER是有效用户。
  • gitosis-admin 存储库位于$PATH. (在 Ubuntu 上,这通常是/srv/gitosis/repositories/gitosis-admin.git
  • $PATH is owned by user "gitosis".

Steps:

  1. If they don't already have one, generate a key pair for the user you want to give gitosis-admin access to.
    sudo -H -u $USER ssh-keygen
  2. Make a local clone of the gitosis-admin repo as the gitosis user.
    sudo -H -u gitosis git clone $PATH
  3. Add the new public key.
    sudo -H -u gitosis cp ~$USER/.ssh/id_rsa.pub ./gitosis-admin/keydir/$USER.pub
  4. Edit the gitosis-admin conf as necessary.
    sudo -H -u gitosis nano ./gitosis-admin/gitosis.conf
  5. Commit as the gitosis user.
    sudo -H -u gitosis git commit -am "Adding $USER" ./gitosis-admin
  6. Push as the gitosis user.
    sudo -H -u gitosis git push ./gitosis-admin
  7. Run the post-update hooks as the gitosis user.
    sudo -H -u gitosis GIT_DIR=$PATH $PATH/hooks/post-update
于 2011-11-07T21:54:49.093 回答
1

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

抱歉,我起初有点略过这个问题。你是如何安装 gitosis 的?我记得有一个常见问题,在安装过程中,gitosis-admin repo 中的必需挂钩未设置为可执行。结果,它在推送时从未更新配置。

此外,您应该只通过 SSH 而不是通过本地文件系统访问由 gitosis 托管的存储库,但您似乎已经弄清楚了这部分。

此外,如果您不知道, gitosis 未维护并且不推荐使用gitolite

于 2011-02-12T19:05:43.703 回答