バックエンド パネルをクリックするだけで、Git リポジトリのさまざまなブランチをチェックアウトできる Web ベースのポータルをセットアップしようとしています。
現在、 index.php、status.sh、およびcheckout.shを含む /var/www/devportal があります。
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 つのパラメーターを渡し、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
うまくいきません。うまくいかないだけでなく、エラーメッセージにうんざりすることもありません。出力はありません。PHPのexecコマンドを介して送信されたコマンドをエコーし 、その正確なものをコピーし、rootとしてログインしたターミナルを介して実行すると、正常に動作し、チェックアウトを行い、新しくアクティブ化されたブランチの名前。
これに関するヒントは大歓迎です。私のボックスはかなり標準的なUbuntu 10.04で、Apache2を実行しています。
ありがとう!