2012-12-14 73 views
1

在我们的服务器上,我们有,每个项目,2个文件夹:/ repository和/ htdocs。 Htdocs是存储库的一个副本,这是裸露的回购。每个开发人员都有自己的存储库克隆。htdocs可以预览项目给项目经理。邮政接收钩从裸回购拉

我想设置一个post-receive钩子,当开发人员推送更新时自动更新htdocs。

我已经按照我的后收到钩:

#!/bin/sh 
GIT_WORK_TREE=../htdocs git pull origin master 

然而,当我推开,我看到以下错误:git error

谁能告诉我是怎么回事?

注意

#!/bin/sh 
GIT_WORK_TREE=../htdocs git checkout -f 

作品,但这是有点慢(因为该项目是相当大的)。也有可能有人在htdocs中做了一些错误修正,如果它们没有被提交,它们将会在checkout -f中丢失。

+0

你说你的“预览”回购是在/ htdocs中,但是你把你的git_work_tree设置为“../site_now” - 这是没有道理的;您需要更详细地解释(更新:帖子已更正,此评论未提供) –

+0

关于您的更新:不应对这样的预览目录进行更改,就像一般性建议 –

+0

制作了错误的副本/粘贴,更新代码工作树应该是htdocs的确。在我看来,不应该在预览目录中工作,这也是有道理的。 – Bram

回答

1

这应该工作:

GIT_WORK_TREE=../htdocs GIT_DIR=../htdocs/.git git pull origin master 

如果不指定GIT_DIR,混帐认为,回购仍是“repository”(裸回购),这可能不是一个远程命名为“origin”(因此错误消息)。