我有两台服务器,一台较旧的服务器运行着普通的程序,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 文件。(否则你在推送时会收到错误)。