将 repo 从普通 git 移至 GitLab 服务器

将 repo 从普通 git 移至 GitLab 服务器

我有两台服务器,一台较旧的服务器运行着普通的程序,git并在 下有三个存储库/opt/。现在要将这些项目转移到新服务器上,我选择在新服务器上运行它,gitlab因为它有 GUI,并且能够邀请朋友学习编程,并且有一个更简单的方法来查看和管理项目。

但是,在转移时,我想保留旧代码库的修订版本。不知怎的,我以为这样做scp -r old-server.net:/opt/project.git /gitlab/就足够了,但却失败了。

我导航到gitlab并创建了一个新的存储库,只是为了获取文件夹结构,该文件夹结构创建了一个 wiki 和一个名为 的代码文件夹,其/gitlab/project.git文件夹结构与旧服务器上的相同(显然没有代码),项目在 中加载良好gitlab,但后来我又做rm -rf project.git了 ,scp ...现在我得到了一个500 We're sorry, but something went wrong.

我的猜测是服务器文件夹中的修订版本和 URL 可能是错误的,但我无法通过手动浏览文件或通过 gitlab 上的文档找到任何东西。

有人做过类似的事情吗?

提前谢谢您!

答案1

将新的 gitlab 远程添加到您现有的存储库并推送:

git remote 添加 gitlab url-to-gitlab-repo

git push gitlab master

答案2

通常最简单的基本解决方案就有效......权限,请始终检查您的权限。

chown -R git.git /gitlab/project.git/

答案3

我假设您有几个想要包含在您的 GitLab 实例中的存储库。

GitLab 提供了一种批量方法来执行此操作。我添加了大约 250 个 repos,没有任何问题。将您的 git 文件复制到 GitLab 服务器上的新位置我将使用名为“import”的目录。如果您需要项目中的子位置,您可以添加“XXX”(甚至 XXX/YYY):

# Use sudo as needed, but it's important to do this
# using the same username than the final GitLab repo.
rsync -av /your/repo/location/* ./import/XXX
# give GitLab  full access
chown git:git ./ -R
# Later GitLab will modify the source and turn into a bundle
chmod 02777 -R ./*.git
# now the real work. Note that the source is import and not import/XXX
gitlab-rake gitlab:import:repos['./import/']

现在刷新你的 GitLab gui,导入的项目将可见。就我而言,我有一些旧的钩子,现在在 GitLab 上已弃用,因此,我批量删除了所有新创建的 git 文件。(否则你在推送时会收到错误)。

相关内容