Git预接收钩子和子模块

时间:2012-11-15 12:43:11

标签: git git-submodules githooks

我在远程裸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

但是,据我所知,这将获得旧修订代码引用的子模块,而不是新推送代码中引用的子模块仍未提交到远程仓库。

关于如何处理这个的任何想法或例子?

非常感谢。

1 个答案:

答案 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

直到我找到一种更干净的方式......这样做: - )