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


108

Как создать зеркало 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, чтобы под именем репозитория отображалось «Зеркальное отображение от»?


2
github.com/apache/libcloud еще один пример зеркального репо, все из Apache LOL
Колин Су,

Ответы:


113

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

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

РЕДАКТИРОВАТЬ : как указывает Стюарт, GitHub больше не принимает запросы на зеркалирование произвольных репозиториев. Единственный оставшийся вариант - это решение, которое я опубликовал в моем вопросе, то есть создание обработчика post-receive для автоматической отправки в ваш репозиторий GitHub.


9

Судя по текущему содержанию https://github.com/mirrors , похоже, что GitHub больше не делает «официальных зеркал», поскольку большинство проектов, которые сегодня хотят, чтобы их код отражался на GitHub, просто создают для этого организацию, такую ​​как сам Git. .

Также есть запрос функции по адресу: https://github.com/isaacs/github/issues/415


На самом деле, некоторые из них имеют репозитории, отраженные на GitHub. Они все равно это делают, но только если вы разработчик проекта, т.е. без «неофициальных» зеркал.
nyuszika7h

И, как говорится, только для организаций.
nyuszika7h


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

1
В чем разница между git clone --bareи git clone --mirror? Разве второй вариант здесь не более уместен?
user7610 02

0

Я использовал инструмент под названием github-backup с умеренным успехом, чтобы если не зеркалировать, то хотя бы сделать полную резервную копию (включая проблемы и другие метаданные) пользователя или организации Github. Чтобы процитировать файл README :

Каждый раз, когда вы запускаете github-backup, он находит новые форки на GitHub. Он добавит пульты дистанционного управления в ваш репозиторий для вилок с такими именами, как github_torvalds_subsurface. Он будет извлекаться из каждой вилки.

Он загружает метаданные из каждой вилки. Он хранится в ветке с именем «github». Каждая вилка получает каталог, например torvalds_subsurface. Внутри каталога будут файлы, например torvalds_subsurface/watchers. Там могут быть дополнительные каталоги, как для комментариев: torvalds_subsurface/comments/1.

Вы можете следить за коммитами в ветке github, чтобы увидеть, какая информация изменилась на GitHub с течением времени.

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

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

  • нет поддержки частного репозитория
  • никаких "социальных" вещей, таких как звезды, подписчики и т. д.
  • примечания к строкам коммитов не поддерживаются (пока?)
  • выпускать этикетки
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.