Создание официального зеркала github
Как создать зеркало github для внешнего репозитория git, чтобы оно отображалось как "настоящее зеркало", например, как в https://github.com/mirrors?
Пока что я настроил зеркало используя:
cd /path/to/bare/repository
git remote add --mirror github git@github.com:user/repo.git
и настройте хук пост-приема, чтобы сделать git push --quiet github
, Таким образом, однако, github не распознает зеркало.
Какие-нибудь идеи, как сделать это способом github, таким образом, чтобы "Mirrorred from" появилось под именем хранилища?
6 ответов
Основываясь на общении со службой поддержки github, я обнаружил, что в настоящее время github не предлагает прямого механизма для пользователя, чтобы зеркалировать репозитории таким способом.
Однако можно попросить github установить этот сервис для репозиториев, которые являются частью организации. Затем Github настраивает существующее хранилище в качестве такого зеркала и извлекает его из интервала, который является функцией от общего числа зеркал, которые они имеют.
РЕДАКТИРОВАТЬ: как отмечает Стюарт, github больше не принимает запросы на зеркалирование произвольных репозиториев. Единственный оставшийся вариант - это решение, которое я разместил в своем вопросе, т. Е. Создание перехвата пост-получения для автоматического добавления в ваш репозиторий github.
Судя по текущему содержанию https://github.com/mirrors, похоже, что GitHub больше не делает "официальных зеркал", так как большинство проектов, которые хотят, чтобы их код зеркалировался на GitHub сегодня, просто создают для него организацию, такую как Git.,
Также имеется запрос на добавление функции по адресу: https://github.com/isaacs/github/issues/415
Следующая страница на github предоставляет вам необходимые инструкции для настройки зеркала для внешнего git-репо. https://help.github.com/articles/importing-an-external-git-repo
Согласно импорту Git:
В целях демонстрации мы будем использовать:
- Внешняя учетная запись с именем extuser
- Персональная учетная запись пользователя GitHub с именем ghuser
- Репозиторий GitHub с именем repo.git
Командная строка:
# Makes a bare clone of the external repository in a local directory
$ git clone --bare https://githost.org/extuser/repo.git
# Pushes the mirror to the new GitHub repository
$ cd *repo.git*
$ git push --mirror https://github.com/ghuser/repo.git
# Remove the temporary local repository.
$ cd ..
$ rm -rf repo.git
Я использовал инструмент под названием github-backup с умеренным успехом, чтобы, если не зеркало, по крайней мере сделать полную резервную копию (включая проблемы и другие метаданные) пользователя или организации Github. Чтобы процитировать файл README:
Каждый раз, когда вы запускаете github-backup, он обнаруживает все новые ветки на GitHub. Это добавит пульты в ваш репозиторий для вилок, используя такие имена, как
github_torvalds_subsurface
, Он будет извлекаться из каждой вилки.Он загружает метаданные с каждого форка. Это хранится в ветке с именем "github". Каждая вилка получает каталог там, как
torvalds_subsurface
, Внутри каталога будет несколько файлов, напримерtorvalds_subsurface/watchers
, Там могут быть дополнительные каталоги, как для комментариев:torvalds_subsurface/comments/1
,Вы можете следить за коммитами в ветке github, чтобы увидеть, какая информация изменилась на GitHub с течением времени.
Формат файлов в ветви github в настоящее время сериализует типы данных Haskell. Это простой текст, который можно прочитать, если вы щурились.
Ограничения включают в себя:
- нет поддержки частного репозитория
- никаких "социальных" вещей, таких как звезды, подписчики и т. д.
- примечания к строкам коммитов не поддерживаются (пока?)
- выпускать ярлыки
Можно было бы установитьcron
действие над репозиторием для достижения зеркального отображения как в принудительном, так и в вытягивающем режиме.