所以我得到了一个包含几个子模块的 GIT 存储库。现在我在我的网络服务器上创建了一个“更新后”钩子,它会在更新时自动部署我的网站。
这就是我的更新后钩子的样子:
#!/bin/sh
rm -rf /home/my_user/public_html/my_website/*
unset GIT_INDEX_FILE
export GIT_WORK_TREE=/home/my_user/public_html/my_website/
export GIT_DIR=/home/my_user/gitrepos/my_website.git
git checkout -f
除了子模块目录未被导出之外,一切都运行良好...这就是我的问题。如何通过 post-update 钩子部署 GIT 存储库及其子模块?
提前致谢!
答案1
它应该可以工作,除了你可以添加,以处理这些子模块:
git submodule init
git submodule update
也可以看看在帖子钩子上使用 git submodule update --init如果您有错误消息。
答案2
好吧,我编写了一个脚本,可以避免使用非裸存储库并忽略receive.denyCurrentBranch
#!/bin/sh
# DIR VARS
DIR_GIT="/home/my_user/gitrepos/my_repo.git"
DIR_HTTP="/home/my_user/public_html/my_website"
unset GIT_DIR
# Recreate HTTP dir
rm -rf $DIR_HTTP
mkdir $DIR_HTTP
# Clone git repository
git clone $DIR_GIT $DIR_HTTP
# import submodules
cd $DIR_HTTP
git init --bare $DIR_HTTP
git submodule init
git submodule update
# delete unnecessary git repository in http dir
rm -rf $DIR_HTTP/.git
欢迎任何改进