[英]Git pre-receive hook and submodules
我在远程裸Git存储库上有一个预接收钩子,当我使用笔记本电脑进行操作时,该钩子将运行测试,压缩一些文件并生成构建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
现在,我在仓库中添加了两个子模块,但找不到有关如何处理此问题的任何文档或示例。 我知道我应该在构建脚本之前运行:
# 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
直到我找到一种更清洁的方法为止...这会做的:-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.