我正在尝试自动更新位于var/www/php/vendor/projectX
每个提交到var/www
超级项目的子模块.我在.git/hooks/post-receive
文件中添加了这些行:
#!/bin/sh echo "Updating submodules recursively" pwd git submodule update --init --recursive
但是当我承诺超级项目时,我得到了这个:
Counting objects: 8, done. Delta compression using up to 8 threads. Compressing objects: 100% (4/4), done. Writing objects: 100% (4/4), 346 bytes | 0 bytes/s, done. Total 4 (delta 3), reused 0 (delta 0) remote: Updating submodules recursively remote: /var/www/.git remote: No submodule mapping found in .gitmodules for path 'php/vendor/projectX' To www-data@11.22.33.44:. 3dc2404..bc46dd6 dev -> dev
然而,.gitmodules文件中存在相应的部分,.git/modules中的文件也是如此.git submodule update --init --recursive
手动运行工作正常.只有当它从钩子运行时才会起作用.谢谢
尝试并:
cd到该repo的根文件夹
在执行git命令时,为该文件夹指定工作树和git目录.
这将在你的post-receive钩子脚本中给出:
cd /var/www/ git --git-dir=/var/www/.git --work-tree=/var/www submodule update --init --recursive