2012-12-14 74 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」(因此錯誤消息)。