Создание официального зеркала github

Как создать зеркало github для внешнего репозитория git, чтобы оно выглядело как "реальное зеркало", например, как в https://github.com/mirrors?

До сих пор я настраивал зеркало, используя:

cd /path/to/bare/repository
git remote add --mirror github [email protected]:user/repo.git

и сконфигурируйте крюк приема сообщения, чтобы сделать git push --quiet github. Таким образом, github не распознает зеркало.

Любые идеи о том, как сделать это github-способом, например, что "Mirrorred from" появляется под названием repicesory?

Ответ 1

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

Однако, можно попросить github установить эту службу для репозиториев, входящих в организацию. Затем Github настраивает существующий репозиторий как таковое зеркало и вытаскивает из него промежуток, который является функцией количества общих зеркал, которые у них есть.

EDIT: как указывает Стюарт, github больше не принимает запросы на зеркалирование произвольных репозиториев. Единственным оставшимся вариантом является решение, которое я опубликовал в своем вопросе, т.е. Создание крюка post-receive для автоматического нажатия в ваш репозиторий github.

Ответ 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. Это простой текст, который можно прочитать, если вы щурились.

Ограничения включают в себя:

  • нет поддержки частного репозитория
  • никаких "социальных" вещей, таких как звезды, подписчики и т.д.
  • примечания к строкам коммитов не поддерживаются (пока?)
  • выпускать ярлыки