Перенос репозиториев между экземплярами Gitlab

из-за моей старой установки Gitlab слишком сложно обновить (поток на форумах поддержки TKL:http://www.turnkeylinux.org/forum/support/20120913/upgrading-gitlab), я загрузил текущий дистрибутив TKL Gitlab и следовал стандартному пути обновления Gitlabs, так что теперь у меня есть полностью обновленная установка Gitlab 6.1, работающая с TKLBAM и всем этим хорошим материалом. Пока все хорошо.

но, оказывается, наша старая версия gitlab не дает HTTP URL-адреса для репозиториев, так что это означает, что я не могу использовать функцию "импортировать существующий репозиторий"в Gitlab 6.1

Я знаю, что могу просто скопировать старые репозитории Git из старой виртуальной машины в новую, но как я могу сделать эти репозитории видимыми в Gitlab на новой виртуальной машине?

4 ответов


один вариант:

  1. клонируйте старое РЕПО из gitlab на машину dev.
  2. создайте пустое РЕПО на новом gitlab.
  3. добавьте новое РЕПО в качестве пульта ДУ на компьютере разработчика.
  4. Push все обратно в новое РЕПО.
  5. удалите старое РЕПО из списка удаленных РЕПО.

чтобы создать пульт с именем newRepo, выполните:git remote add newRepo gitlab.localhost.com:User/newRepo.git (замените url-адрес в конце на один для вашего РЕПО)


недавно я мигрировал из gitolite в gitlab и официальную задачу rake gitlab:import:repos работал для меня. Я использую gitlab 6.1.0 (82f3446). Вот что я сделал:--14-->

  • rsync голые РЕПО от gitolite'у к repositories/{group}/. Обязательно замените {repository} С именем репозитория gitolite и измените имя хоста вашего сервера gitlab.

    rsync -rth --progress repositories/{repository}.git \
    git@gitlab-server:/home/git/repositories/{group}/
    

    здесь {group} - это имя группы пользователей, в которую необходимо добавить репозиторий. Если у вас их нет конкретная группа, выберите root название группы.

  • Fix разрешения-только необходимые, когда rsync пользователь не git:

    sudo chown -R git:git repositories/{group}/
    
  • cd ~/gitlab

  • запустите задачу rake для импорта всех новых репозиториев:

    bundle exec rake gitlab:import:repos RAILS_ENV=production
    

теперь, если вы войти в систему как администратор вы найдете новый проект добавлен.

для получения дополнительной информации, обратитесь к разделу "импорт голой репозитории в экземпляр проекта GitLab " под http://{your-gitlab-server}/help/raketasks.

в вашем случае вы можете войти в свою старую систему TKL и rsync все голые РЕПО в новый экземпляр, а затем импортировать.


Я сделал это практически следующим образом после прочтения ответа ChrisA, который дал мне небольшую головную боль о том, как это сделать практически. Пример копирует РЕПО из github в gitlab, чтобы сделать источник и назначение немного яснее.

  1. клонируйте старое РЕПО из github на машину dev (которая создает голое РЕПО):

    $ git clone --mirror git@github.com:me/myrepo.git
    
  2. создайте пустое РЕПО на новом gitlab.

  3. добавить новое РЕПО в качестве удаленная на компьютере разработчика.

    $ cd myrepo.git
    $ git remote add newRepo git@gitlab.com:me/myrepo.git
    
  4. Push все обратно в новое РЕПО.

    $ git push --mirror newRepo
    

вот именно.

таким образом, он скопировал все ветви и теги в новое место назначения.

Теперь вы можете удалить клонированное голое РЕПО с вашей машины dev.


Если ваш Gitlab >= 8.9, то вы можете использовать экспорт/импорт для переноса РЕПО.