5

我最近在本地网络的服务器中安装了带有 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. Please try再次。

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

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

我对此感到非常困惑。我找到的链接之一是将存储库从 Gitlab 服务器导出到另一个 Gitlab 服务器(请注意,我不是从其他 Gitlab 导入的,而是在 PC 中使用简单的git init.我的案子不是小菜一碟:我整天都在寻找这个,但没有成功......)。在该链接中,有一部分说:

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

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

git pull http://111.222.33.44/path/to/my/repository/root/folder/my_project.bundle

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

我还能做些什么吗?我对 Git 的了解有限:我几乎总是独自使用它来维护存储库,不需要在push任何地方使用它们,也不需要在任何pull地方使用它们(我的一个 GitHub 项目例外)。

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

4

3 回答 3

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 导入页面

有了这个,导入就像一种魅力——而且速度很快。

于 2019-08-20T10:18:56.210 回答
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

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

于 2019-01-24T08:27:31.173 回答
1

就我而言,这个问题的根本原因是我的密码(由 Gerrit 创建的临时 HTTP 密码)中包含特殊字符。我不得不不断生成密码,直到我得到一个没有特殊字符的密码。

于 2019-07-02T18:16:37.607 回答