用于网站发布的Git post-receive hook - 选择的文件不起作用

时间:2013-08-12 14:30:52

标签: git githooks git-post-receive

基于this answer我尝试实施以下内容:

当推送到web repo时,我不希望将整个存储库内容复制到我的web目录,而只是复制到某些文件/目录。

所以,在我的post-receive钩子里,我这样做:

GIT_WORK_TREE=/full/path/to/web/directory git checkout -f -- web/index.php

然而,非常奇怪的是,目录中index.php的版本永远不会正确更新。虽然我的裸存储库目录中的git log显示了推送到它的最新提交,但index.php的版本是前一个。

另外,我创建了一个名为test的文件,并将其添加到上面的路径中以复制到工作树中 - 这也没有显示出来。

文件肯定已执行。我添加了一个显示在我的控制台上的echo命令,并且我在正常工作的目录中进行了一些清理。所有文件都在那里并更新。 (我使用全新的git clone进行了检查。)只有一个分支,master

这一切都非常令人沮丧,因为它在我第一次设置时效果很好。不知道这里有什么不对。感谢。


更新:

我尝试了以下内容:

# added "testfile" at the end of the checkout line in post-receive

echo "Test" > testfile
git add testfile 
git commit -m "Test."
git push web

>...
> remote: error: pathspec 'testfile' did not match any file(s) known to git.
>...

cd ..
git clone <remote web> newdir

>...

cd newdir
cat testfile

> Test

因此repo按预期更新,但未找到新文件。路径规范可能有问题吗?

0 个答案:

没有答案