Git post-receive不支持非裸仓库

时间:2015-01-29 22:26:08

标签: git windows-7 msysgit git-post-receive

我试图让一个简单的Git post-receive挂钩工作,但它似乎没有运行。

我所拥有的只是:

#!/bin/sh
git checkout -f master

请注意,这是一个非裸存储库(我设置了denyCurrentBranch = ignore),以便我可以推送它。

然而,当我推动它时,它似乎没有运行git checkout -f命令。然后在命令行中运行相同的命令会按预期运行。

请注意,这是一个简单的测试用例,只是在我的C盘上使用本地存储库。

我设法通过一个简单的回购并将git push放入其中来获得后接收挂钩。我的目的是让我们共享一个“共享”#34; repo在收到后,然后自动推送到非裸露的网站" repo(然后需要自动执行git checkout -f)。

为什么这不适用于非裸体回购的任何想法?或者有关如何调试它的任何提示?

1 个答案:

答案 0 :(得分:1)

事实证明,这是因为非裸仓库中的当前工作目录是.git目录。

所以虽然我可以在裸仓库中执行此操作(因为git元数据文件夹与repo根目录相同)...

#!/bin/sh
git do something

在非裸仓库中,我必须这样做......

#!/bin/sh
GIT_WORK_TREE=.. git do something