【问题标题】:Gitolite git clone errorGitolite git克隆错误
【发布时间】:2011-06-29 18:57:30
【问题描述】:

我正在尝试在我的服务器(Macos 服务器)上设置 gitolite。

我按照此处找到的安装文档中的说明进行操作: http://sitaramc.github.com/gitolite/doc/1-INSTALL.html

我安装了root方法。

我已完成所有设置(ssh pubkey 身份验证和默认 gitolite 设置)

$ssh git@server info
hello admin, the gitolite version here is v1.5.9.1-27-gb97115f
the gitolite config gives you the following access:
     R   W  gitolite-admin
    @R_ @W_ testing

根据安装说明,我应该可以签出存储库。

但是当我尝试克隆 gitolite-admin 存储库时出现错误:


$ git clone git@server:gitolite-admin
Cloning into gitolite-admin...
Assertion failed: (argv0_path), function system_path, file exec_cmd.c, line 27.
error: git-shell died of signal 6
fatal: The remote end hung up unexpectedly

我得到了最新的 git 版本的 gitolite 和 git v. 1.7.3.4

谁能帮帮我?

编辑 1:在错误消息前添加 git clone 命令

【问题讨论】:

  • 你使用的 git clone 命令是什么?
  • git clone git@server:gitolite-admin
  • 我会尝试像这样克隆:“git clone ssh://git@server/gitolie-admin”,但不知道这是否是您的问题的原因。
  • 这似乎是一个改进,现在我得到了:克隆到 gitolie-admin... R 访问 gitolie-admin 拒绝用户(或者在给定路径上可能没有存储库。你拼写了吗?正确吗?)致命:远程端意外挂断
  • 这很奇怪,因为我应该有 RW 访问权限

标签: git gitolite


【解决方案1】:

似乎对这个错误的正确修复是添加

$ENV{GIT_EXEC_PATH} = "/usr/libexec/git-core";

到您的 .gitolite.rc 文件。

【讨论】:

  • 遇到了同样的问题。这是最简单(且有效)的修复方法,而且很有意义。
【解决方案2】:

OP skipper3kreportsRUNTIME_PREFIX 在 Git 中的问题,有点类似于“git pull broken”问题:

我不确定是否为您定义了 RUNTIME_PREFIX。但是,在查看Makefile 时,我确实注意到前缀默认为$(HOME)。我怀疑这可能是您的问题的原因。

简单的答案是把它放在~/.bashrc:

export GIT_EXEC_PATH=/opt/local/libexec/git-core

如果您想了解更多关于发生了什么,您可能必须使用port -d upgrade -f git-core(或类似的)重新编译 git,并仔细查看构建日志以查看前缀在哪里正在设置中。
顺便说一句,port cat git-core 显示大量使用 ${prefix}


原答案:

首先,您是否获得了最新的 gitolite 版本?
https://github.com/sitaramc/gitolite/,您需要考虑'pu' 分支。

installation documentation is then this one


GitoliteV3 or 'g3'文档:

“安装”包含以下选项:

  1. 将源代码保存在任何地方,并使用完整路径运行 gitolite 命令。
  2. 将源代码保存在任何地方,只需将 gitolite 程序符号链接到 $PATH 上的某个目录。
  3. 将源代码复制到某处并使用该路径运行 gitolite 命令。

您可以通过 3 种不同的方式运行“安装”命令:

# option 1
gitolite/install

# option 2
gitolite/install -ln
# defaults to $HOME/bin, or use a specific directory:
gitolite/install -ln /usr/local/bin

# option 3
gitolite/install -to /usr/local/gitolite/bin

gitolite V2 的旧答案: 其次,我更喜欢 "from-client method" 方法:

此方法的优点是它强制您在尝试安装之前解决 ssh pubkey 问题。
如果您有专用的用户 ID,则效果最好,

  • 服务器上一个用于安装gitolite,
  • 一个在客户端负责管理它。

缺点是管理员用户最终有两个键

  • 一个用于外壳访问(他开始使用)和
  • 一个用于 gitolite 访问(脚本在需要时创建)。

所以我喜欢用两组不同的参数创建一个 ~/.ssh/config 文件:

host gitolite
     user git
     hostname server
     identityfile ~/.ssh/git
host gitadmin
     user git
     hostname server
     identityfile ~/.ssh/id_rsa (myaccount public key)

gitolite-admin 仅对第一个公共 ssh 密钥可见:

C:\HOMEWARE\git>ssh gitolite
hello git, the gitolite version here is v1.5.9-25-ga10287a
the gitolite config gives you the following access:
     R   W      gitolite-admin
    @R_ @W_     testing
Connection to server closed.

使用我的帐户:

C:\HOMEWARE\git>ssh gitadmin
hello myaccount, the gitolite version here is v1.5.9-25-ga10287a
the gitolite config gives you the following access:
    @R_ @W_     testing
Connection to mccprdgit10 closed.

所以:

C:\HOMEWARE\git>git clone gitolite:gitolite-admin
Cloning into gitolite-admin...
remote: Counting objects: 16, done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 16 (delta 2), reused 0 (delta 0)
Receiving objects: 100% (16/16), done.
Resolving deltas: 100% (2/2), done.

【讨论】:

  • Tnx,我会试试这个方法。我会及时通知你。
  • 我得到错误 $ssh gitadmin PTY 分配请求在通道 0 上失败
  • gitolite 是否需要任何特殊的 ssh 设置?
  • @skipper3k:不,只是完整的 ssh 访问权限。你输入了什么确切的命令,你得到了什么确切的完整错误消息?
  • 我现在做了一个全新的 gl-easy-install,最后我得到了这个:现在我们将 gitolite-admin repo 克隆到您的工作站,看看它是否都挂在一起。我们现在将在您的 $HOME 中执行此操作,如果您愿意,您可以稍后将其移动到其他地方。 ...按 Enter 继续或 Ctrl-C 退出 克隆到 gitolite-admin ... 断言失败:(argv0_path),函数 system_path,文件 exec_cmd.c,第 27 行。错误:git-shell 死于信号 6 致命: 远端意外挂断
【解决方案3】:

问题在于 git 在 mac 上的编译方式。我不得不在没有设置 RUNTIME_PREFIX 的情况下手动编译 git。现在可以了。

【讨论】:

  • 您究竟是如何取消设置 RUNTIME_PREFIX 的?这和没有make prefix=/bleh/bleh的建筑一样吗?
【解决方案4】:

我几乎尝试了我能想到的任何东西,但无法让它工作......直到我注意到某个地方 GIT 的电子邮件地址非常高......所以我使用 -C 选项重新生成了我的 ssh 密钥对:

ssh-keygen -t rsa -C "nospam@nowhere.org"

瞧,突然之间我可以毫无问题地克隆 gitolite-admin。

显然 .gitconfig 的 user.email 密钥中的电子邮件必须对应 用于生成 SSH 密钥的电子邮件。老实说,如果您的 .ssh 文件夹中只有 1 个密钥对,那电子邮件对应到底有什么关系呢?恕我直言,如果您传递了一个密钥并且该密钥位于服务器上的 authorized_keys 中,那么无论 .gitconfig user.email 属性如何,它都应该可以工作。

【讨论】:

    【解决方案5】:

    不确切知道您的安装问题是什么,知道您执行了哪些命令在服务器中安装 gitolite 会很有用。

    我推荐你阅读这两个链接,当我安装 gitolite 时它们对我很有帮助:

    http://kris.me.uk/2010/09/30/git-repository-server-gitolite.html(特别是这个)

    http://progit.org/book/ch4-8.html

    【讨论】:

    【解决方案6】:

    在忘记前两次之后,刚刚处理了 第三次,我认为这并不罕见。

    $ git clone git@hugo:gitolite-admin
    Cloning into gitolite-admin...
    fatal: The remote end hung up unexpectedly
    

    至少有一个原因是 gitolite 用户必须有一个登录 shell - 由于某种原因使系统用户无法工作.. 它只是摔倒了,导致上述错误。

    另外,对于 ssh 测试,您必须在命令行上关闭 PTY,否则 ssh 根本无法工作 - 我认为它可能适用于旧版本的 ssh 但没有任何作用我有:

    $ ssh git@hugo
    PTY allocation request failed on channel 0
    
    $ ssh -T git@hugo
    hello key, this is git@hugo running gitolite3 v3.01-10-g699bafa on git 1.7.10
    

    (为什么它认为我被称为 'key' 是我还没有解决的另一个配置问题)。

    【讨论】:

      【解决方案7】:

      作为 Gitolite v3 的解决方案,对于 Mac Lion,这对我有用:

      $ENV{PATH}="/usr/local/bin:$ENV{PATH}";

      将它添加到 ~/.gitolite.rc 以供 服务器上的 git 用户使用。确保它在“1;”之前最后。

      详见:https://serverfault.com/questions/307493/cant-clone-gitolite-admin

      涉及 GIT_PATH 的解决方案已过时,根据: http://sitaramc.github.com/gitolite/g2migr.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多