繁体   English   中英

Git预先接收钩子和子模块

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM