我在远程裸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
现在,我已经在repo中添加了两个子模块,我找不到任何关于如何处理它的文档或示例。我知道我应该在构建脚本之前运行:
# git submodule init
# git submodule update
但是,据我所知,这将获得旧修订代码引用的子模块,而不是新推送代码中引用的子模块仍未提交到远程仓库。
关于如何处理这个的任何想法或例子?
非常感谢。
答案 0 :(得分:0)
好的,我找到了一个解决方案(现在)似乎正在运行,这样的解决方案:
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
直到我找到一种更干净的方式......这样做: - )