Восстановление репозиториев GitLab из серверных каталогов - PullRequest
0 голосов
/ 27 февраля 2019

У меня GitLab-CE работал на Ubuntu 16 VPS, но из-за некоторых проблем с nginx и просто проблем в целом я не смог войти в GitLab на моем сервере.Так как мне все равно пришлось стереть сервер, я решил, что просто создам резервную копию папки /var/opt/gitlab/git-data/repositories/ и надеюсь на лучшее, чтобы восстановить те, которые были установлены после новой установки GitLab.

Это позже.Теперь у меня установлена ​​версия GitLab-EE, версия Omnibus, в Ubuntu 18.04.Я переместил папки из /var/opt/gitlab/git-data/repositories/username/ из резервной копии в новую установку.Это папки с именами reponame.git и reponame.wiki.git для каждой.У меня также правильно установлены права доступа к файлам.

Единственное, что явно отличается:

  1. пользователь git принадлежит группе gitна новом репо, сделанном на новом сервере, но у старых есть группа root с пользователем git

  2. При выполнении ls -al вновь созданный репо имеет следующеедля крючков

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

, в то время как у старого есть hooks.old.1528595819/, в котором есть только файл readme о крючках, но ничего полезного.

Чтомои шансы восстановить их в новой установке GitLab?Я не могу просто сделать hooks символической ссылкой на /opt/gitlab/.../hooks/ для всех из них и изменить группу владельца, так как он ничего не делает, чтобы они отображались в веб-интерфейсе.

Какой мой лучший вариант здесь?

1 Ответ

0 голосов
/ 27 февраля 2019

Я разработал решение, которое занимает больше времени, чем хотелось бы, но оно определенно вернуло мне все мои файлы.Вот что я сделал, если это пригодится кому-то еще в будущем.Много раз вещи теряются без ответов, и если вы просто пытаетесь вернуть свои файлы, это может сделать это для вас.

  1. Скопировать папки (с именем [имя репо] .git)в папку на компьютере, который не является сервером.Положите каждый в свою собственную папку.Например, sample.git помещается в папку с именем sample.
  2. Перейдите в этот каталог в терминале
  3. Повторно инициализируйте репо с помощью git init
  4. Локально восстановите файлы с помощью git reset --hard HEAD
  5. Установите удаленный сервер в качестве новой ветви для этого репо и коммита.Теперь файлы отображаются на удаленном сервере GitLab как доступные.

Шаг git init был всего лишь предположением, но это именно то, что было нужно.

Я бы по-прежнемуМне нравится слышать, есть ли более быстрый способ пакетного обновления всех репозиториев на сервере, но вместо этого это работает.

...