Git post-收到无法处理非裸回购
Git post-receive not working on non-bare repo
我正在尝试让一个简单的 Git post-receive 挂钩起作用,但它似乎不是 运行ning。
我只有:
#!/bin/sh
git checkout -f master
请注意,这是一个非裸存储库(我设置了 denyCurrentBranch = ignore)以便我可以推送到它。
但是,当我按下它时,它似乎并没有运行 git checkout -f
命令。 运行 命令行中的相同命令会按预期执行。
请注意,这是一个简单的测试用例,仅使用我 C 盘上的本地存储库。
我已经设法让 post-receive 挂钩正常工作,方法是拥有一个裸仓库并将 git push
放入其中。我的意图是在 post-receive 中有一个裸 "shared" 回购,然后自动推送到非裸 "website" 回购(然后需要自动执行 git checkout -f
).
知道为什么这不适用于非裸仓库吗?或者关于如何调试它的任何提示?
原来是因为non-bare repo中的当前工作目录是.git
目录。
所以虽然我可以在裸仓库中执行此操作(因为 git 元数据文件夹与仓库根文件夹相同)...
#!/bin/sh
git do something
在非裸仓库中,我必须这样做...
#!/bin/sh
GIT_WORK_TREE=.. git do something
我正在尝试让一个简单的 Git post-receive 挂钩起作用,但它似乎不是 运行ning。
我只有:
#!/bin/sh
git checkout -f master
请注意,这是一个非裸存储库(我设置了 denyCurrentBranch = ignore)以便我可以推送到它。
但是,当我按下它时,它似乎并没有运行 git checkout -f
命令。 运行 命令行中的相同命令会按预期执行。
请注意,这是一个简单的测试用例,仅使用我 C 盘上的本地存储库。
我已经设法让 post-receive 挂钩正常工作,方法是拥有一个裸仓库并将 git push
放入其中。我的意图是在 post-receive 中有一个裸 "shared" 回购,然后自动推送到非裸 "website" 回购(然后需要自动执行 git checkout -f
).
知道为什么这不适用于非裸仓库吗?或者关于如何调试它的任何提示?
原来是因为non-bare repo中的当前工作目录是.git
目录。
所以虽然我可以在裸仓库中执行此操作(因为 git 元数据文件夹与仓库根文件夹相同)...
#!/bin/sh
git do something
在非裸仓库中,我必须这样做...
#!/bin/sh
GIT_WORK_TREE=.. git do something