2010-08-27 126 views
23

使用外部Subversion存储库的一个副作用是在每次提交时都进行自动异地备份。自动镜像git存储库

我想用Git实现相同的功能。

即对本地存储库的每次提交都会自动提交到外部提交,因此两个存储库始终保持同步。

我想像一个后提交钩将是要走的路。有没有人有这方面的具体例子?

回答

18

我为此写了一个post-commit hook。钩本身很简单,只是一个名为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

是还有其他情况,回购可能会不同步? 我将如何检查(和重新同步)。人们可以承诺外部回购? – 2010-08-27 11:06:30

+0

'人们可以承诺外部回购?:这将取决于如何配置外部回购。如果你想要一个只读镜像,那么你可以防止他人提交。 '我如何检查(和重新同步)'如果没有其他人提交回购,那么我没有看到回购可能不同步的太多方式。如果他们这样做,总会有合并。 – 2010-08-27 11:19:34

+0

对不起。我的另一个问题措辞不好。 – 2010-08-27 11:28:41