2011-04-22 69 views
3

我目前正在設置一個gd架構如here所述。Git後更新鉤不能拉

有問題的服務器運行Windows Server 2008 R2,使用copSSH和msysGit。

它的JIST是一對GIT中回購:即被推到,然後包含實時應用另一非裸回購一個裸回購。

被推向回購包含更新後掛鉤,如下所示:

echo 
echo "**** Pushing data to Live Server." 
echo 

cd /cygdrive/c/Repositories/Live || exit 
unset GIT_DIR 
git pull hub master 

exec git-update-server-info 

值得注意的是:現場是非裸回購是,顧名思義,生活。 Live.git是包含上面的鉤子並被推送到的裸回購。我無法在沒有/ cygdrive /的情況下cd到repo,這是通過在診斷推送中回顯$ pwd而發現的。

拉力成功調用在Live回購,問題就來了在定位在更新Live.git回購。我得到讀起來像「怪球」錯誤:

remote: Pushing data to Live Server.ommand not foundnd not foundle or directory 
remote: : not foundpdate-server-infoand not foundand not founddommand not found 

樞紐通過本地git的外殼既/c/Repositories/Live.git和/ cygdrive/C /庫/現場定義爲遠程倉庫。飯桶。

我用直接文件夾路徑取代了「hub」,甚至嘗試諸如「../Live.git」 我嘗試過的所有內容都在git更新失敗中結束。所有嘗試更新命令中Live.git的路徑都是通過git bash嘗試的,工作目錄設置爲Live repo並工作。

謝謝你的任何線索或幫助!


更新: 我的模式要求我從中心庫拉,將採取的房間不必要的量來解釋爲什麼,但情況就是這樣。

我做了更多的測試,發現更多關於我的問題: 當我通過SSH推送到我的存儲庫時,主集線器已成功掛載並執行pull命令。當所述pull命令嘗試解析集線器庫時,它會失敗(正如我上面詳述的那樣),但事實證明,鉤子中有一系列的ls命令,沒有文件夾可見。我甚至在/ cygdrive/c /上運行了ls,只能看到名爲usr的文件夾。我已確保copSSH用戶對整個文件系統具有完全的管理權限(僅用於測試和調試目的)。

我不知道爲什麼我的路徑必須使用/ cygdrive /路徑,我不包裝,除了在copSSH在cygwin了cygwin安裝。這是否表示我的配置有問題?或者copSSH + msysGit設置正常嗎?即使ls不會列出存儲庫文件夾,我怎麼可能從鉤子掛載主存儲庫?

回答

1

你不應該需要/cygdrive與msysgit路徑,除非你也有Cygwin的安裝(在這種情況下msysgit MinGW和cygwin的組合可能是你的問題的根源)

+0

我沒有安裝cygwin,但是copSSH包含cygwin--有關更多詳細信息,請參閱更新後的問題。有沒有不使用cygwin的Windows ssh服務器?這可能是解決方案。 – 2011-04-23 05:27:16

+0

@James:我建議在'DOS'會話中嘗試鉤子的命令,檢查默認的'PATH'(帶'copSSH')是否是問題。然後,如果你得到相同的錯誤(這意味着你需要使用'/ cygdrive'),那麼可以在'DOS'會話中重新定義'PATH'以僅包含'msysgit'和基本的Windows路徑。如果該命令在該會話中運行,則在您的鉤子中設置相同的'PATH'。 – VonC 2011-04-23 08:56:15

+0

我完成了上述操作,現在所有路徑都可以正確解析。謝謝! – 2011-04-23 17:39:43

1

你不應該嘗試從回購鉤子運行git pull。雖然有些人會說它運作良好,但不會因爲各種因素而導致行爲不可預測。

相反,你應該使用的方法,如這一個。http://toroid.org/ams/git-website-howto

該方法在裸回購中使用post-receive掛鉤來調用git checkout來更新目錄。

+0

爲'git checkout'方法+1 – manojlds 2011-04-22 09:54:13