Створення офіційного дзеркала 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 способом, таким чином, що під назвою репозиціонеру відображається "Дзеркальне відображення"?


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

Відповіді:


113

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

Однак можна попросити GitHub встановити цю послугу для сховищ, які є частиною організації. Потім GitHub конфігурує наявне сховище як таке дзеркало і витягує з нього інтервал, який є функцією від кількості загальних дзеркал, які вони мають.

EDIT : як зазначає Стюарт, GitHub більше не приймає запити на дзеркальне відображення довільних сховищ. Єдиний варіант, що залишився - це рішення, яке я розмістив у своєму запитанні, тобто створити гачок після отримання, щоб автоматично перейти до вашого сховища GitHub.


9

Судячи з поточного вмісту https://github.com/mirrors , GitHub більше не робить "офіційних дзеркал", оскільки більшість проектів, які хочуть, щоб їхній код віддзеркалювався сьогодні на GitHub, просто створив для нього організацію, таку як сам Git .

Також є запит на функцію за адресою: https://github.com/isaacs/github/isissue/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? Хіба другий варіант тут не підходить більше?
користувач7610

0

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

Кожен раз, коли ви запускаєте github-резервне копіювання, він знайде нові вилки на 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.