2010-08-27 2 views
23

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

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

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

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

ответ

18

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

git push my_remote 

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

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

UPDATE: Если вы хотите, чтобы убедиться, что ваш сервер, и ваше зеркало не рассинхронизироваться, и убедитесь, что все ветви также резервное копирование, ваш post-commit крюк можно использовать:

git push my_remote -f --mirror 
+1

ли существуют ли какие-либо оставшиеся сценарии, когда репо может перестать синхронизироваться? Как бы проверить (и повторно синхронизировать). Могут ли люди совершать внешние репо? –

+0

'Могут ли люди совершать внешние репо?': Это будет зависеть от того, как настроено внешнее репо. Если вы хотите зеркало только для чтения, вы можете запретить другим совершать действия. 'Как я могу проверить (и повторно синхронизировать)', если никто другой не выполняет репо, тогда я не вижу слишком много способов, как репозиции могут быть не синхронизированы. Если они это делают, всегда происходит слияние. –

+0

Извините. Мой дополнительный вопрос был плохо сформулирован. –

Смежные вопросы