我最近在本地网络的服务器中安装了带有 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
的命令行软件!