Назад | Перейти на главную страницу

Зеркало github на Gitlab

В локальном gitlab я создал копию проекта nova (https://github.com/openstack/nova).

Как мне синхронизировать локальное репозиторий nova с github, обновляя, возможно, раз в час или в день?

Хотелось бы решения, аналогичного описанному здесь для битнами: http://wiki.bitnami.com/Applications/BitNami_GitLab#Keeping_in_sync_with_the_GitLab_repository_at_GitHub

(Я использовал Devstack для установки Openstack.)

GitLab теперь эта функция встроена!
Начиная с GitLab EE 8.2 это поддерживается. Ура!

Извлечение из удаленного репозитория

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

При создании нового проекта вы можете включить зеркальное отображение репозитория, выбрав импорт репозитория из «Любого репозитория по URL». Введите полный URL-адрес репозитория Git, из которого нужно извлечь, и щелкните значок Зеркало репозитория флажок.


(источник: gitlab.com)

>

Для существующего проекта вы можете настроить вытягивание зеркала, посетив свой проект Настройки ➔ Репозиторий и поиск раздела «Извлечь из удаленного репозитория». Установите флажок "Зеркало репозитория" и нажмите Сохранить изменения внизу.
...

если ты никогда нужны локальные коммиты, подойдет следующий рецепт:

Клонировать репо с помощью --mirror:

git clone --mirror https://github.com/openstack/nova.git

Затем в cronjob вы делаете это для ежечасного обновления:

0 * * * * cd /path/to/nova.git && git fetch

В --mirror устанавливает спецификации таким образом, что последующие выборки будут обновлять все локальные ссылки, поэтому вам не нужно объединять изменения. Конечно, это означает, что коммиты, помещенные в это репо, теряются.

Я написал проект с намерением добавить удаленные зеркала в GitLab. Вы можете проверить это здесь...

https://github.com/sag47/gitlab-mirrors

Создайте задание cron для обновления репо

Вы можете сделать это, используя cron вакансии.

В вашем типе терминала crontab -e (чтобы отредактировать ваш crontab) и добавьте новую строку внизу следующего содержания.

* 0 * * * git clone ssh://username@hostname:port/repo

Он будет запускать клон каждый день в полночь.