为什么在“git子模块更新”之前,子模块中没有'git fetch'?

时间:2013-10-22 12:42:22

标签: git

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

当我或其他团队成员想要更新wordpress核心时,我们将cd插入本地计算机上的wordpress子模块并运行' git fetch'然后是结帐版本。然后,我们在超级项目中提交更改并将提交推送到共享仓库。

但是,当我们在生产服务器上部署我们的网站时,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服务器的子模块中尚不存在。我假设部署脚本需要一个额外的步骤,首先进入子模块文件夹并运行一个&#39; git fetch&#39;在&#39; git子模块更新之前&#39;命令运行。但是,我无法找到其他人使用&#39; git fetch&#39;在他们的子模块工作流程中。我错过了什么?解决方案是添加&#39; - recurse-submodules&#39;切换到&#39; git fetch&#39;命令?

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

0 个答案:

没有答案