2011-02-12 112 views
1

我使用以下指南设置了Gitosis的一个git回购我的Ubuntu 10.04服务器上: http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way混帐:克隆Gitosis的管理员回购本地

它的工作原理非常愉快,我可以克隆的配置,我的Ubuntu 10.10桌面电脑,并在那里提交更改。

那好吧,但我做了我在服务器上的大部分实际编码。所以我需要在本地克隆配置/ gitosis-admin.git回购和其他回购协议。

git clone --local file:///home/git/repositories/gitosis-admin.git give me: fatal:'/home/git/repositories/gitosis-admin.git'似乎不是一个Git仓库 致命:远程端挂机意外

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

然后我尝试在服务器上创建一个公钥并将其添加到密钥admin repo中,并在配置中将(用户)和(用户)@(主机名)用户名添加到: 混帐混帐克隆@本地:Gitosis的-admin.git或混帐混帐克隆@(主机名):Gitosis的-admin.git 两者问我要的git @(主机名)的密码

当我回到我的桌面,并检查了Gitosis的管理员回购,gitosis.conf的列表: [Gitosis的]
[组Gitosis的管理员]
可写Gitosis的管理员
成员=(desktopUN)@(desktopHostname)(serverUN)@( serverHostname)

但在服务器上,如果我将根目录放入/home/git/repositories/gitosis-admin.git/和cat gitosis.conf,它会列出 [Gitosis的]
[组的gitosis管理员]
写的gitosis管理员
成员=(desktopUN)@(desktopHostname)

我不能让我解决这个头,我该如何设置此得到它按我想要的方式工作。在这一切背后,有一些小白鼠咳嗽的可能性很大,但我花了5个小时试图让它现在起作用,并花了我2分钟来建立一个svn回购站。所以我等得不耐烦了..

感谢

回答

1

您需要可以在服务器上添加用户的SSH公钥的gitosis或从桌面上的SSH私钥复制到用户的服务器上,用它。

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

此外,您应该只能通过SSH访问通过gitosis托管的回收站,而不是通过本地文件系统访问,但您似乎已经计算出了这部分。

此外,如果您不知道,gitosis是维护和不赞成使用gitolite

+0

我通过克隆GIT中安装了它://eagain.net/gitosis.git,手动添加用户GIT中,然后须藤-H -u GIT中Gitosis的-INIT aktivb 2011-02-13 10:19:58

+0

你是对的。 home/git/repositories/gitosis-admin.git/hooks/post-update没有设置为可执行文件。把所有东西都整理出来 – aktivb 2011-02-13 10:23:10

1

我想给这个问题一个详细的答案,因为我只需要使用gitosis-admin本地克隆来让其他人的安装正常工作。我认为其他用户可能会来这里寻找帮助,找出如果您需要编辑gitosis-admin,但只有本地root访问repos所在文件系统的权限,该怎么办。如果这就是你如何到达这里,你的直觉是好的,因为你可以克隆和本地编辑gitosis-admin库。然而,为了使所有的工作都能正常工作,你必须小心你的工作方式。以下是具体步骤:

前提条件:

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

步骤:

  1. 如果他们不已经有一个,为你产生想给Gitosis的管理员权限的用户密钥对。
    sudo -H -u $USER ssh-keygen
  2. 将gitosis-admin回购的本地克隆作为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