Как восстановить репозиторий gitlab из пакета git? - PullRequest
0 голосов
/ 30 августа 2018

Случайно я принудительно переместился из моего локального репозитория в репозиторий GitLab с активным зеркалированием, которое затем удалило все скрытые и связанные с GitLab ссылки (для запроса на слияние 'refs / merge-request') на удаленном компьютере.

Я сказал своим коллегам прекратить взаимодействие с удаленным репозиторием и спросил OP, могу ли я получить ежедневную резервную копию для этого репозитория. Я получил файл repositoryname.bundle.

Теперь, как мне восстановить пульт с помощью этого файла пакета?

1 Ответ

0 голосов
/ 30 августа 2018

Я решил это сам, вот так.

Создайте временный каталог и перейдите туда

cd $(mktemp -d)

Получите пакет из ваших OP (полный снимок) хранилища там

mv /tmp/yourrepo.bundle .

Клонировать сломанный репозиторий из GitLab в BROKEN

git clone --mirror URL_to_yourrepo BROKEN.git

cd в BROKEN и запустите git bundle verify ../reponame.bundle. Он не должен сообщать о каких-либо ошибках, если так, продолжайте

cd BROKEN.git
git bundle verify ../yourrepo.bundle

Вернитесь назад и затем клонируйте новый репозиторий из файла комплекта

cd ..
cd git clone --mirror yourrepo.bundle LASTKNOWNGOOD.git

cd и убедитесь, что все ваши рефери здесь, как вы ожидаете, будут

cd LASTKNOWNGOOD.git
git show-ref

Теперь установите удаленный репозиторий на локальный клон BROKEN из GitLab

git remote add BROKEN ../BROKEN.git

Затем перенесите содержимое здесь на BROKEN пульт ДУ

git push --tags --force --mirror BROKEN

К тому времени хранилище BROKEN должно быть исцелено. Перейдите в BROKEN и смоделируйте пуш, чтобы убедиться, что он будет делать то, что вы ожидаете

cd ../BROKEN.git
git push --tags --verbose --dry-run --mirror origin

Если похоже, что вы ожидаете, запустите без --dry-run, чтобы исцелить удаленный репозиторий. Он может сообщать о remote rejected, но если они принадлежат группе keep-around refs, вы можете спокойно их игнорировать. Вам также необходимо повторно открыть все автоматически закрытые запросы на слияние в GitLab для этого хранилища.

...