Как обновить git clone --mirror? - PullRequest
127 голосов
/ 27 мая 2011

Я создал репозиторий git для зеркалирования живого сайта (который является непроходимым репозиторием git):

git clone --mirror ssh://user@example.com/path/to/repo

Теперь, чтобы обновлять этот зеркальный клон всеми изменениями из его удаленного источникакакую команду или команды я должен использовать?

Я бы хотел обновлять все: коммиты, ссылки, хуки, ветки и т. д.

Спасибо!

Ответы [ 3 ]

192 голосов
/ 27 мая 2011

Это команда, которую нужно выполнить на зеркале:

git remote update
7 голосов
/ 27 мая 2011

Что касается коммитов, ссылок, веток и " и так далее ", ответ Магнуса просто работает (git remote update).

Но, к сожалению, нет способа clone / mirror /update крючки , как я и хотел ...

Я нашел эту очень интересную тему о клонировании / зеркалировании крючков:

http://kerneltrap.org/mailarchive/git/2007/8/28/256180/thread

Я выучил:

  • Хуки не считаются частью содержимого хранилища.

  • Есть и другие данные, например .git/description папка, которая не клонируется, так же, как хуки.

  • Стандартные хуки, которые появляются в hooks директории, взяты из TEMPLATE_DIR

  • В git есть интересная функция template.

Итак, я могу либо проигнорировать эту "вещь клонирования крючков", либо пойти на стратегию rsync, учитывая цели моего зеркала (резервное копирование + источник только для других клонов).

Хорошо ... Я просто забуду о клонировании хуков и придерживаюсь пути git remote update.

  • Сехе только что указал, что не только "ловушки" не управляются процессом clone / update, но также хранятся, перезаписываются и т. Д. Итак, для строгой резервной копии rsync илиэквивалент действительно был бы путь.Поскольку в моем случае в этом нет особой необходимости (я могу позволить себе не иметь крючков, тайников и т. Д.), Как я уже сказал, я буду придерживаться remote update.

Спасибо!Немного улучшил мой собственный "git-fu" ...: -)

4 голосов
/ 27 мая 2011

Смотрите здесь: Git не клонирует все ветви на последующих клонах?

Если вы действительно хотите это, потянув ветви вместо push --mirror, вы можете посмотреть здесь:

"fetch --all" в репозитории git bare не синхронизирует локальные ветви с удаленными

В этом ответе подробно описываются шаги для достижения этого относительнолегко:

...