我正在尝试设置一个基于 Web 的门户,通过该门户我们可以通过简单地单击后端面板来签出 Git 存储库的不同分支。
所以目前,我有 /var/www/devportal 其中包含index.php、status.sh和checkout.sh
在index.php中,我执行以下操作:
$repo = $_GET['repo'];
$command = 'sh status.sh ' . $repo;
$output = exec($command);
echo "<pre>$output</pre>";
status.sh的内容是:
#!/bin/bash -e
if [ $# -ne 1 ]
then
echo "Usage: `basename $0` <repo name>"
exit 1
fi
cd /var/www/$1
git status
这很好用。在 PHP 中回显的输出显示了 /var/www/proj 中当前分支的状态。
现在,当我尝试使用 checkout.sh 做同样的事情(这次传递 2 个参数,第二个是要结帐的分支的名称)时,其内容是:
#!/bin/bash -e
if [ $# -ne 2 ]
then
echo "Usage: `basename $0` <repo name> <branch name>"
exit 1
fi
cd /var/www/$1
git checkout $2
它不起作用。它不仅不起作用,而且我不会因为错误消息而傻傻地蹲下。没有输出。我知道 checkout.sh 脚本工作正常,因为当我回显通过 PHP 的 exec 命令发送的命令时,复制该确切内容并通过以 root 身份登录的终端运行它,它工作得很好,执行结帐并返回新激活的分支的名称。
对此的任何提示将不胜感激。我的盒子非常标准,Ubuntu 10.04 并运行 Apache2。
谢谢!