Как создать зеркало 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" появляется под названием repicesory?
Ответ 1
Основываясь на общении с командой поддержки github, я обнаружил, что github в настоящее время не предлагает прямого механизма для пользователя, чтобы таким образом зеркалировать репозитории.
Однако, можно попросить github установить эту службу для репозиториев, входящих в организацию. Затем Github настраивает существующий репозиторий как таковое зеркало и вытаскивает из него промежуток, который является функцией количества общих зеркал, которые у них есть.
EDIT: как указывает Стюарт, github больше не принимает запросы на зеркалирование произвольных репозиториев. Единственным оставшимся вариантом является решение, которое я опубликовал в своем вопросе, т.е. Создание крюка post-receive для автоматического нажатия в ваш репозиторий github.
Ответ 2
Следующая страница github предоставляет вам необходимые инструкции по настройке зеркала для внешнего репозитория git. https://help.github.com/articles/importing-an-external-git-repo
Ответ 3
Судя по текущему контенту https://github.com/mirrors, похоже, что GitHub больше не делает "официальных зеркал", так как большинство проектов, которые хотят их код, отраженный на GitHub сегодня, просто создает для него организацию, например Git.
Существует также запрос функции: https://github.com/isaacs/github/issues/415
Ответ 4
Согласно Импортировать 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
Ответ 5
Я использовал инструмент под названием github-backup с умеренным успехом, чтобы, если не зеркало, по крайней мере сделать полную резервную копию (включая проблемы и другие метаданные) пользователя или организации Github. Чтобы процитировать файл README:
Каждый раз, когда вы запускаете github-backup, он обнаруживает все новые ветки на GitHub. Он добавит пульты в ваш репозиторий для вилок, используя такие имена, как github_torvalds_subsurface
. Он будет извлекаться из каждой вилки.
Он загружает метаданные с каждого форка. Это хранится в ветке с именем "github". Каждый форк получает там каталог, например torvalds_subsurface
. Внутри каталога будут некоторые файлы, такие как torvalds_subsurface/watchers
. Могут быть другие каталоги, например, для комментариев: torvalds_subsurface/comments/1
.
Вы можете следить за коммитами в ветке github, чтобы увидеть, какая информация изменилась на GitHub с течением времени.
Формат файлов в ветки github в настоящее время сериализует типы данных Haskell. Это простой текст, который можно прочитать, если вы щурились.
Ограничения включают в себя:
- нет поддержки частного репозитория
- никаких "социальных" вещей, таких как звезды, подписчики и т.д.
- примечания к строкам коммитов не поддерживаются (пока?)
- выпускать ярлыки