Автоматически зеркалировать git-репозиторий - PullRequest
23 голосов
/ 27 августа 2010

Одним из побочных эффектов использования внешнего репозитория Subversion было получение автоматических резервных копий вне сайта при каждом коммите.

Я бы хотел добиться того же, используя Git.

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

Я полагаю, что крюк после фиксации был бы подходящим вариантом. У кого-нибудь есть конкретные примеры этого?

1 Ответ

20 голосов
/ 27 августа 2010

Я написал хук после фиксации именно для этой цели.Сам крючок прост;просто добавьте файл с именем post-commit в каталог .git/hooks/ со следующим содержимым:

git push my_remote

Файл post-commit должен быть исполняемым.Также убедитесь, что вы добавили подходящий удаленный репозиторий с именем my_remote, чтобы этот хук работал.

Я также создал символическую ссылку с именем post-merge, которая указывает на post-commit,Это необязательно.Если вы сделаете это, вы также будете автоматически синхронизироваться после слияний.

ОБНОВЛЕНИЕ: Если вы хотите, чтобы ваш сервер и ваше зеркало не синхронизировались, и чтобы все ветви также были зарезервированы, ваша ловушка post-commit может использовать:

git push my_remote -f --mirror
...