【发布时间】:2012-10-02 10:43:56
【问题描述】:
我有以下设置,我正在使用子模块submodule 处理一个项目project。每当我将更改推送到 github 时,它都会向服务器上的 update.php 发送一个发布请求。
这个 php 文件执行一个 git 命令。没有子模块我可以做一个 git pull 一切都很好,但是有了子模块就困难得多了。
我现在有这个,但它没有做我想要的。我应该 git pull repo 并更新并拉取每个子模块的最新版本。
<?php echo `git submodule foreach 'git checkout master; git pull;
git submodule update --init --recursive; git commit -m "updating"' && git pull &&
git submodule foreach 'git add -A .'
&& git commit -m "updating to latest version including submodules" 2>&1s`;
编辑// 好的,我完成了一半。
<?php echo `git submodule foreach 'git checkout master; git pull;
git submodule update --init --recursive; git commit -am "updating"; echo "updated"' &&
git pull && git commit -am "updating to latest version including submodules" &&
echo 'updated'`;
回显阻止脚本因为返回非零而停止。当我使用 php update.php 从控制台运行它时,它可以 100% 正常工作。
当 github 初始化文件,或者我从浏览器运行它时,它仍然不起作用。
有什么想法吗?
【问题讨论】:
-
它的作用是什么?您是否尝试过切换
git pull和第一个git submodule foreach …?第二个git submodule foreach …没有git commit。 -
我都试过了,既然从控制台运行它工作正常,它实际上应该不是脚本中的问题,对吧?它可能与权限有关吗?如果是这样,我该如何解决?
-
你说“没有子模块(...)一切都很好”,所以我猜网络服务器具有所需的权限。脚本运行时间呢?它停在哪里?
-
顺便说一句,你为什么要服务器更新子模块?您确定该项目适用于最新版本的子模块吗?毕竟,你只是用最后一个签出的版本来测试它。
-
对。
git pull && git submodule update --init --recursive让服务器在主 repo 的最新提交中检查每个子模块的引用提交。
标签: git github git-submodules