【问题标题】:Git: Cloning gitosis admin repo locallyGit:在本地克隆 gitosis admin repo
【发布时间】:2011-02-12 16:34:06
【问题描述】:

我使用以下指南在我的 ubuntu 10.04 服务器上设置了一个带有 gitosis 的 git repo: 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”:权限被拒绝

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

当我回到我的桌面并查看 gitosis-admin 存储库时,gitosis.conf 列出了: [gitosis]
[组 gitosis-admin]
可写的 gitosis-admin
成员 = (desktopUN)@(desktopHostname) (serverUN)@(serverHostname)

但是在服务器上,如果我进入 /home/git/repositories/gitosis-admin.git/ 和 cat gitosis.conf,它会列出 [gitosis]
[组 gitosis-admin]
可写的 gitosis-admin
成员 = (desktopUN)@(desktopHostname)

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

谢谢

【问题讨论】:

    标签: git ubuntu gitosis


    【解决方案1】:

    我想详细回答这个问题,因为我只需要使用 gitosis-admin 本地克隆来让其他人的安装正常工作。我认为其他用户可能会来这里寻求帮助,以了解 如果您需要编辑 gitosis-admin 但只有本地 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 用户的身份制作 gitosis-admin 存储库的本地克隆。
      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

    【讨论】:

    • 我只是凭记忆写的,所以如果有任何错误,请告诉我。干杯!
    【解决方案2】:

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

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

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

    此外,如果您不知道,gitosis 未维护且已弃用,有利于 gitolite。

    【讨论】:

    • 我通过克隆 git://eagain.net/gitosis.git 安装它,手动添加用户 git,然后 sudo -H -u git gitosis-init
    • 你是对的。 home/git/repositories/gitosis-admin.git/hooks/post-update 未设置为可执行文件。一切都解决了。
    • 既然你还没有对 gitosis 投入太深,真的,建议你改用 Gitolite。它得到积极维护,而且功能更强大。
    猜你喜欢
    • 2010-11-20
    • 2020-12-11
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 2022-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多