1

我在 Ubuntu 16 VPS 上运行 GitLab-CE,但由于一些 nginx 问题和更普遍的问题,我最终无法在我的服务器上登录 GitLab。由于无论如何我都必须擦除服务器,所以我想我只是备份该/var/opt/gitlab/git-data/repositories/文件夹,并希望在以后通过新的 GitLab 安装恢复这些文件夹时获得最好的结果。

晚了。我现在在 Ubuntu 18.04 上安装了 GitLab-EE,即 Omnibus 版本。我将文件夹从/var/opt/gitlab/git-data/repositories/username/备份移动到新安装。这些是文件夹,reponame.gitreponame.wiki.git每个文件夹命名。我也正确设置了文件权限。

唯一明显不同的是:

  1. 用户git属于git在新服务器上创建的新 repo 上的组,但旧root用户与用户有组git

  2. 这样做ls -al时,新创建的 repo 具有以下钩子

hooks -> /opt/gitlab/embedded/service/gitlab-shell/hooks/

而旧的hooks.old.1528595819/只有一个关于钩子的自述文件,但没有任何帮助。

在新的 GitLab 安装中恢复这些的机会有多大?我不能只是为所有这些创建hooks一个符号链接/opt/gitlab/.../hooks/并更改所有者的组,因为这并不能让这些显示在 Web 界面上。

我在这里最好的选择是什么?

4

1 回答 1

2

我制定了一个比我想要的更耗时的解决方案,但它确实让我找回了所有文件。这就是我所做的,以防它对其他人有帮助。很多时候东西会在没有答案的情况下被放弃,如果你只是想找回你的文件,这可能会为你做。

  1. 将文件夹(名为 [repo name].git)复制到不是服务器的计算机上的文件夹。将每个放在其自己的包含文件夹中。因此,例如sample.git放入一个名为sample.
  2. 转到终端中的那个目录
  3. 重新初始化回购git init
  4. 在本地恢复文件git reset --hard HEAD
  5. 将远程服务器设置为该 repo 的新分支并提交。现在这些文件在远程 GitLab 服务器上显示为可访问的。

git init一步只是一个猜测,但这正是我们所需要的。

我仍然很想听听是否有更快的方法来批量更新服务器上的所有存储库,但取而代之的是,这可行。

于 2019-02-27T18:16:20.263 回答