Подтвердить что ты не робот

Экспортировать репозиторий с сервера Gitlab на другой сервер Gitlab

Только что установил новый новый 6.8 Gitlab на совершенно новом высокопроизводительном сервере.

Перед тем, как забыть историю моих репозиториев (комментарии, проблемы и т.д.), знаете ли вы, как экспортировать данные репозитория с сервера Gitlab на другой сервер Gitlab?

Мне просто не удалось найти что-либо в документации для экспорта/переноса всех данных проекта (а не только репозитория git и его вики).

4b9b3361

Ответ 1

Для версий GitLab >= 8.9 (выпущен в июне 2016 г.) вы можете использовать встроенную функцию экспорта и импорта.

Обратите внимание, что для существующих установок GitLab параметр импорта проекта должен быть включен в настройках приложения (URL: /admin/application_settings) в разделе "Источники импорта". Для включения и использования функций импорта вам необходимо быть администратором.

Здесь полная документация: https://gitlab.com/help/user/project/settings/import_export.md

Ответ 2

Недавно я сделал это, мы обновили наш экземпляр gitlab и вам нужно было сохранить и импортировать репозитории в новую установку.

Сначала создайте пакет выгруженного репозитория. Например, скажем, вы проверили репозиторий, мы будем называть myrepository

Чтобы проверить репозиторий, используйте git clone (пусть предполагается, что ваш репозиторий находится под учетной записью root, а ipaddress - 192.168.1.1)

git clone http://192.168.1.1/root/myrepository.git (или соответствует вашей среде)

Теперь этот шаг несколько важен; вам нужно перейти в рабочий каталог, в котором есть .git-папка вашего выгруженного репозитория.

cd myrepository

Затем вы создаете файл пакета:

git bundle create myrepository.bundle --all

Импортируйте файл пакета в новый экземпляр gitlab.

Создайте новый 'myrepository' в интерфейсе gitlab gui

клонировать пустой репозиторий; скажем, эта новая gitlab имеет ipaddress 192.168.1.2:

git clone http:\\192.168.1.2\root\myrepository.git (или соответствует вашей среде)

Вы получите предупреждения о том, что вы клонировали пустой репозиторий. Это нормально.

Перейдите в рабочий каталог выгруженного репозитория и выполните git pull:

cd myrepository

git pull file/path/to/myrepository.bundle

это вытащит репозиторий в ваш клон. Затем вы можете сделать git add, git commit и git push

Это должно работать, если вы правильно настроили настройки сервера gitlab; у вас могут возникнуть такие проблемы, как необходимость добавить параметр client_max_body_size в файл nginx.conf, а также 'git config - global http.postBuffer' для ввода больших файлов.

Другой способ сделать это - сделать файлы патча каждой фиксации, а затем развернуть их:

Это включает в себя выполнение 'git format-patch -C 0badil..68elid -o patch_directory_path' и ссылку на диапазон всех ваших коммитов и их перетаскивание в выходной каталог; это должно дать вам один файл исправления за фиксацию. Далее будет задействован git клонирование нового пустого репозитория, изменение в рабочий каталог клона и применение патчей к новому репозиторию с использованием 'git am patch_directory_path'

Ответ 3

Для самих репозиций вы можете использовать git bundle: он будет генерировать один файл, который легко скопировать.
(как я описал в Резервное копирование локального хранилища Git)

Но другой способ - просто git clone --mirror ваши репозитории с первого сервера на локальной рабочей станции и git push --mirror на новый сервер.
Это то, что GitHub подробно описывает на странице справки Дублирование репозитория".

В обоих случаях вам нужно сначала объявить эти репозитории на новом сервере GitLab, чтобы они были инициализированы и готовы к фиксации.


Но для остальных... не легко. Существует запрос :
(Обновление августа 2016 года, 2 года спустя: В GitLab 8.9 реализована эта функция)
(для версии GitLab старше 8,9 см. и выше, Грег Дубицки ответ)

Я согласен, что проблемы - это главное, чтобы сделать экспорт в первую очередь. Они хранятся в базе данных. Сохранение их в Git не является вариантом. Может быть, экспортировать их как форматированный файл (SQL, YAML или что-то еще).

Это сообщение показывает экспорт базы данных mysql.

Используйте mysqldump для создания дампа старой базы данных, затем создайте новую базу данных на новом сервере и импортируйте ее.

  • По старому:
    mysqldump gitlab | gzip > gitlab.sql.gz
  • В новом окне:
    gunzip < gitlab.sql.gz | mysql gitlab

Запустите команду db migrate, чтобы убедиться, что схема обновлена ​​до последней версии.

sudo -u gitlab -H bundle exec rake db:migrate RAILS_ENV=production