'推送部署'包含子模块的post-receive hook?

时间:2016-12-18 21:03:06

标签: git

目前,我有一个post-receive挂钩,其中包含:

git --work-tree=/served/data/location --git-dir=/this/bare/git/repo checkout -f

这很有效,直到我想要包含一个它忽略的子模块。

经过一番阅读后,我想我可以简单地添加:

git --work-tree=/served/data/location --git-dir=/this/bare/git/repo submodule update --init --recursive

唉:

  没有工作树的情况下不能使用

git-submodule

奇怪,因为我已经明确地提供了与先前结账相同的--work-tree,这很好。

我在服务器上使用git version 2.7.4,并使用git version 2.11.0推送。

据我所知,这是the same issue as here,除了谈到称为“OpenShift”的事情。我从来没有听说过,也没有使用过,所以答案并没有真正帮助。

1 个答案:

答案 0 :(得分:3)

由于某种原因,该命令需要从工作树内部运行,而不是裸git目录,即使提供了两个参数:

/裸回购/钩/后接收

git --work-tree=/served-data --git-dir=/bare-repo checkout -f
cd /served-data
git --work-tree=/served-data --git-dir=/bare-repo submodule update --init --recursive