0

我们在 Web 项目中安装了 Wordpress 作为子模块。我们是一个 5 人的团队,有一个共享的仓库。生产服务器是从共享存储库的主分支部署的。

当我或其他团队成员想要更新 wordpress 核心时,我们 cd 进入本地机器上的 wordpress 子模块并运行“git fetch”,然后运行 ​​checkout 版本。然后我们在超级项目中提交更改并将提交推送到共享存储库。

但是,当我们在生产服务器上部署我们的网站时,Capistrano 部署脚本失败并显示:

fatal: reference is not a tree

部署脚本运行以下命令:

git fetch -q origin
git fetch --tags -q origin 
git reset -q --hard (latest commit)
git submodule -q init
git submodule -q sync
export GIT_RECURSIVE=$([ ! \"`git --version`\" \\< \"git version 1.6.5\" ] && echo --recursive)
git submodule -q update --init $GIT_RECURSIVE
git clean -q -d -x -f

根据我的研究,我相信提交引用的树对象在 Web 服务器的子模块中尚不存在。我会假设部署脚本需要一个额外的步骤,首先 cd 进入子模块文件夹并在运行“git submodule update”命令之前运行“git fetch”。但是我找不到其他人在他们的子模块工作流程中使用“git fetch”。我错过了什么?将“--recurse-submodules”开关添加到“git fetch”命令的解决方案是什么?

更新我认为问题可能与服务器上运行的 git 版本(Centos 6 上的 1.7.1)有关,所以我们升级到 1.7.11,但问题仍然存在。

4

0 回答 0