2010-03-01 68 views
3

我有一个要推送更改的回购。我想同步两个存储库:./pages.git到./pages。我的开发机器上的git安装程序推入pages.git。但是网络应用程序可以使用./pages。如何自动化git以在服务器上自动克隆回购?

git clone pages.git pages 
fatal: destination path 'pages' already exists and is not an empty directory. 

那么现在我删除了pages目录和git clone作品。但那不是干净的解决方案,不是吗?

有没有办法做到这一点,而不必手动删除网页目录?我希望自动执行该过程,以便git在推送时自动执行操作。

最佳, 马吕斯

回答

4

为什么不只是创建为pages.git库,将做一个git pullpages仓库内拉过来的变化post-receive hookgit clone被设计为每个生成的克隆只运行一次(因此它为什么会投诉,直到您删除以前的克隆),而git pull被设计为在您想更新其他更改的repo时反复运行。

我有一个钩设置与特定档案库里的东西基本上是相同的,因为这,这里是它的要点是:

cd /var/repos/path_to_mirror || exit 
unset GIT_DIR 
git pull origin master 
  • 在这种情况下,path_to_mirrorpages在您的情况相当。
  • 此脚本将在pages.git/.git/hooks/post-receive文件中。
+0

我认为这是行不通的。当他从本地回购页面推送pages.git时,并没有在那里提交。 – 2010-03-01 12:38:32

+1

这就是为什么它需要成为“post-receive”挂钩。 (在远程存储库上执行 - 在这种情况下是'pages.git' - 在项目被推送到它之后。) – Amber 2010-03-01 12:40:24

0

在我的理解你正在local复制,推到pages.git并有webapp副本?

如果是这样,你可以使用pages.gitpost-receive挂钩,将调用git pullpages或进行简单的复制到pages

Post-receive挂钩在从本地推送后在远程repo上工作。它在执行之后全部参考文献已更新,因为push