使用post_update挂钩时,无法在裸存储库中设置GIT_WORK_TREE变量

时间:2012-11-25 19:49:59

标签: git

我正在尝试使用http://danielmiessler.com/study/git/#website设置git来管理我的网站。我正在使用win7中的git gui

我已经完成了说明的最后一步:git push website

在推送到网站后,我能够确认裸目录〜/ website.git中的对象目录已更新。

我的钩子叫'post_update'它有以下内容

#!/bin/sh
echo
echo "**** Pushing data to Live Server.">>~/hi.txt
echo
export > ~.file1.txt
GIT_WORK_TREE=/home/***/public_html/b1a
export >> ~.file1.txt
git checkout -f

当我去/ public_html / b1a时,它是一个空目录。请注意,我已将hooks目录和b1a更改为777。

我可以确认post_update挂钩正在触发,因为我将环境变量打印到file1.txt(如上所示)。在我看到的文件中:

GIT_DIR="."

但没有看到GIT_WORK_TREE。没有能力设置这个我就被困住了。

我将不胜感激,

提前致谢,

比尔

1 个答案:

答案 0 :(得分:1)

编辑:好的,现在我看到了你的问题。

这是您需要的脚本:

#!/bin/sh
echo
echo "**** Pushing data to Live Server.">>~/hi.txt
echo
GIT_WORK_TREE=/home/***/public_html/b1a git checkout -f

我真的不知道为什么以及它是如何工作的,但确实如此。

我不知道你为什么要将export输出重定向到那些文件 - 你真的需要吗?

此脚本只检查存储库的当前HEADGIT_WORK_TREE目录。而已。如果您还有其他需要,请发表评论。


我认为你没有导出GIT_WORK_TREE变量。

尝试更改这些行,以便您真正导出该变量而不是仅设置它:

#!/bin/sh
echo
echo "**** Pushing data to Live Server.">>~/hi.txt
echo
export GIT_WORK_TREE=/home/***/public_html/b1a
export > ~/.file1.txt
git checkout -f

第一个export设置GIT_WORK_TREE值并将其标记为导出,第二个将所有当前导出的变量输出到文件。

我在Linux上运行它,但我希望它在git-bash上也一样......