Git预接收挂钩和子模块

Git预接收挂钩和子模块,git,git-submodules,githooks,Git,Git Submodules,Githooks,我在远程裸Git repo上有一个预接收钩子,当我从笔记本电脑上执行操作时,它将运行测试、压缩一些文件并生成构建ID: $ git push production master 预接收挂钩的简化版本如下所示: while read oldrev newrev refname do # Export deployed branch to build directory mkdir -p $BUILD_DIR git archive $newrev | tar -x -C $BUILD_DIR

我在远程裸Git repo上有一个预接收钩子,当我从笔记本电脑上执行操作时,它将运行测试、压缩一些文件并生成构建ID:

 $ git push production master
预接收挂钩的简化版本如下所示:

while read oldrev newrev refname
do
# Export deployed branch to build directory
mkdir -p $BUILD_DIR
git archive $newrev | tar -x -C $BUILD_DIR 
cd $BUILD_DIR
the_build_script.sh 
done
现在,我已经在repo中添加了两个子模块,我找不到任何关于如何处理这个问题的文档或示例。我知道我应该在生成脚本之前运行:

# git submodule init
# git submodule update
但是,据我所知,这将得到旧版本代码引用的子模块,而不是新推送代码中引用的子模块,仍然没有提交到远程回购

关于如何处理这个问题有什么想法或例子吗


非常感谢。

好的,我找到了一个(目前)似乎有效的解决方案,类似这样的解决方案:

echo "Exporting repo and submodules for build process..."
git clone -l --recursive . $BUILD_DIR  
echo "Cleaning up git information..."
find $BUILD_DIR -name ".git" -exec rm -rf {} \; || true
直到我找到一个更干净的方法…这样就可以了:-)