GIT 网站开发包括子模块

GIT 网站开发包括子模块

所以我得到了一个包含几个子模块的 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

欢迎任何改进

相关内容