为什么 Gitlab 无法从本地网络导入存储库,状态码为 128?

Seb*_*SBM 5 git gitlab-omnibus gitlab-ce

我最近在本地网络的服务器中安装了带有 Docker 的 GitLab。我正在尝试迁移我在 PC 中本地维护的存储库。我通过本地网络中的本地 HTTP 服务器公开它作为解决方法,只是为了能够将其导入 GitLab,因为 GitLab 管理面板中几乎所有可用的选项都类似于“从 GitHub 导入”,这些选项都没有帮助在我的情况下(我的意思是:我不能只上传我的存储库.git文件夹来导入它吗? -retorically 说)顺便说一句,我选择的是“通过 URL 存储”:

在此处输入图片说明

我不得不禁用一个安全设置,因为 GitLab 不允许从指向本地网络中服务器的 URL 导入。因此,我在出站服务部分打开了名为“允许从钩子和服务向本地网络发出请求”的选项。

然后,我尝试从 GitLab 创建一个新项目,使用名为“导入项目”的选项卡并在其中填写表单。然后,它会持续运行很长时间,并显示“正在导入...”消息,看起来它一直在一遍又一遍地重试,直到显示此消息:

每次导入尝试都失败:将存储库http://111.222.33.44/path/to/my/repository/root/folder/.git导入 myuser/my_project 时出错- 13:CreateRepositoryFromURL: clone cmd wait: exit status 128. 请尝试再次。

我一直在阅读在线发布的 Gitlab 手册,关于 GitLab 的不同文章,搜索有关此错误的信息并发现了数十张具有类似(但非常不同!)问题的票......但我仍然不明白:为什么我不能立即上传我的存储库?

给定的 URL本身不是问题:如果我在网络浏览器中输入它,我可以在网络浏览器中清楚地看到我项目的整个文件系统,如果我添加/.git到它,我什至可以看到隐藏.git文件夹的内容在我的浏览器中......但是,出于某种原因,这对于 GitLab 来说还不够......

我对此感到非常困惑。我找到的链接之一是将存储库从 Gitlab 服务器导出到另一台 Gitlab 服务器(请注意,我不是从其他 Gitlab 导入的,而是在 PC 中创建的一个简单的 git 存储库,使用简单的 .findinggit init阅读材料远程类似于我的案例不是小菜一碟:我一整天都在寻找这个问题,但没有成功......)。在该链接中,有一部分内容是:

您将收到克隆空存储库的警告。这是正常的。切换到已签出存储库的工作目录并执行 git pull

...所以我找到了我的 GitLab 安装创建“空存储库”的文件夹,并尝试git pull从那里执行命令,将其路由到我的其他本地服务器机器。类似的东西:

git pull http://111.222.33.44/path/to/my/repository/root/folder/my_project.bundle
Run Code Online (Sandbox Code Playgroud)

....bundle在另一侧成功创建文件后,按照我在上述链接中找到的说明进行操作。但是,出于某种原因,我的 GitLab 服务器的 CLI 找不到命令git!(也许是被某种东西包裹了virtualenv?或者更确切地说,它最初没有被包括在内PATH?谁知道......)。无论如何,拉到哪里?没有工作目录可供拉取!

我还有什么可以做的吗?我对 Git 的了解是有限的:我几乎总是单独使用它来维护自己的存储库,不需要在push任何地方使用它们,也不需要pull从任何地方使用它们(除了我的一个 GitHub 项目很少见)。

我可能要补充一点,Gitlab 官方手册关于如何导入项目包括从任何地方迁移的说明,除了原始的、未包装的、未加糖的、普通的git命令行软件!

jon*_*ckt 5

我有同样的错误Error importing repository http://111.222.33.44/path/to/my/repository/root/folder/.git into myuser/my_project - 13:CreateRepositoryFromURL: clone cmd wait: exit status 128. Please try again.

就我而言,我必须提供用户名和密码,因为我从中导入的存储库是用它 (gitblit) 保护的。我也尝试了很多方法,但最终似乎是 GitLab 故障。对我来说,使用所提供的字段Username (optional),并Password (optional) 没有工作!我必须直接在Git repository URL字段内提供凭据(如文档中的旧屏幕截图所示):

gitlab 导入页面

有了这个,导入就像一个魅力 - 并且速度很快。


Seb*_*SBM 4

最后,真正的问题实际上是对 GitLab 的 Web 菜单如何工作的误解。

当您在 GitLab 的 Web 界面中单击“新建项目”时,有 3 个选项卡可供选择:

  • 空白项目
  • 从模板创建
  • 进口项目

我不认为“空白项目”是正确的选择...我的意思是...“我正在尝试将我的项目导入 GitLab”是我的想法,所以我尝试从“导入项目”选项卡(这就是为什么我最终发布了这个问题)...但是,尝试从“空白项目”解决了我的问题。

我只是放弃了我的提交历史记录,并尝试根据当前的项目文件状态从头开始创建一个新的存储库。但是,出乎意料的是,在创建“空白项目”后,GitLab 指示我将我的存储库导入到这个“空白项目”中。我引用:

CMD Instructions - Existing Git repository

cd existing_repo
git remote rename origin old-origin
git remote add origin http://gitlab.somedomain.net/myuser/someblank-domain.git
git push -u origin --all
git push -u origin --tags
Run Code Online (Sandbox Code Playgroud)

于是,“空白项目”变成了“引进项目”。问题解决了!