我试图让一个简单的Git post-receive挂钩工作,但它似乎没有运行。
我所拥有的只是:
#!/bin/sh
git checkout -f master
请注意,这是一个非裸存储库(我设置了denyCurrentBranch = ignore),以便我可以推送它。
然而,当我推动它时,它似乎没有运行git checkout -f
命令。然后在命令行中运行相同的命令会按预期运行。
请注意,这是一个简单的测试用例,只是在我的C盘上使用本地存储库。
我设法通过一个简单的回购并将git push
放入其中来获得后接收挂钩。我的目的是让我们共享一个“共享”#34; repo在收到后,然后自动推送到非裸露的网站" repo(然后需要自动执行git checkout -f
)。
为什么这不适用于非裸体回购的任何想法?或者有关如何调试它的任何提示?
答案 0 :(得分:1)
事实证明,这是因为非裸仓库中的当前工作目录是.git
目录。
所以虽然我可以在裸仓库中执行此操作(因为git元数据文件夹与repo根目录相同)...
#!/bin/sh
git do something
在非裸仓库中,我必须这样做......
#!/bin/sh
GIT_WORK_TREE=.. git do something