gitolite 场景 - git Push 失败并出现错误“FATAL: <host>: '<repo>' is local”

问题描述 投票:0回答:1

我正在调试一个旧的旧版 gitolite 服务器实例问题,其中 git Push 失败并显示“FATAL: : '' is local”消息,需要帮助解决此问题。

以下是 gitolite 实例详细信息:

  • gitolite 服务用户“gituser”
  • 服务器是主服务器“gitmaster”和远程位置的从服务器“gitslave”
  • 主要的 gitolite-admin.git 存储库位于 master 上的 /home/gituser/repositories
  • /home/gituser/.ssh/config 的主机别名为“gitmaster”和“gitslave”
  • /home/gituser/.gitconfig 是基本的(带有用户名和电子邮件)
  • /home/gituser/.gitolite.rc 是默认的(启用镜像)

在服务器(主服务器)上以“gituser”身份登录时,对任何克隆的 gitolite 存储库进行任何 git 编辑后,命令“git push”失败并出现以下错误:。任何其他 git 管理员都知道为什么可能会出现以下错误。

注意:类似的 git Push 适用于其他系统的用户。尝试使用 git/ssh 详细日志记录进行调试,更改远程 set-url ,没有太多附加信息,并且不确定为什么 .gitolite 日志显示 mode=local 和镜像,而步骤在 master 上。我需要尝试 git 克隆、编辑和 master 的 git 推送。

看到错误:

$ git push
FATAL: gitmaster: 'gitolite-admin' is local
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

~/.gitolite/logs/xxxxx 条目:

.... ssh ARGV=server-gitmaster SOC=git-receive-pack 'gitolite-admin' FROM=<ip>
.... mirror,pre_git,gitolite-admin,user=,sender=gitmaster,mode=local

git远程-v显示:

origin  gituser@gitmaster:gitolite-admin (fetch)
origin  gituser@gitmaster:gitolite-admin (push)

gituser 的 .ssh/config:

...
host gitmaster
     user gituser
     hostname <gitmaster.domain.name>

gitolite.conf 片段:

repo gitolite-admin
    RW+     =   @admins
    option mirror.master    =  gitmaster
    option mirror.slaves    =  gitslave

尝试使用 git 和 ssh 详细日志记录,分析 ssh 和 gitolite 日志,但没有太多有用的信息。

git ssh gitolite ssh-config
1个回答
0
投票

Gitolite 的镜像功能旨在保持主存储库与从存储库同步。在您的情况下,

gitmaster
是主机,
gitslave
是从机。
主服务器上的
.ssh/config
文件定义了别名(
gitmaster
gitslave
),用于简化与这些服务器的 SSH 连接。
但是:镜像和 SSH 别名的组合似乎导致 Gitolite 将
gitmaster
别名解释为本地存储库而不是远程服务器。它尝试在本地推送更改,从而导致“
FATAL: <host>: '<repo>' is local
”错误。你可以在
Triggers/Mirroring.pm
的Gitolite源代码中看到定义并抛出的错误,它应该是由:

引起的
  • 不正确的 SSH 别名配置,其中 Gitolite 误解了存储库位置。
  • gitolite.conf
  • 中的设置不正确

为了测试,请尝试注释掉或从

gitmaster
中删除
.ssh/config
别名:这应该强制使用实际主机名,防止 Gitolite 将存储库视为本地存储库。
和/或尝试显式指定完整的远程 URL:
git push [email protected]:gitolite-admin

关于gitolite.conf,作为临时措施,禁用镜像看看推送是否有效。

© www.soinside.com 2019 - 2024. All rights reserved.