私のワークフローは非常に単純です。
- ローカル:
mkdir testrepo && git init && git add . && git commit -m 'commit X' && git push -u origin master
よし、github からの私のレポが更新されます。
- 開発サーバー:
git clone github_repo_url
ここで説明されているように、ポスト受信フックを設定しました。
ローカルから変更をプッシュすると、リポジトリは更新されますが、サーバー側のスクリプトが<?php git pull
機能しません。サーバーをsshして実行するとphp github.php
、スクリプトは実際に実行git pull
され、サーバー上のファイルが更新されます。
私も試しまし<?php $output = shell_exec('git pull'); echo $output;
たが同じです。プッシュすると、レポが更新されます。受信後フックが正しく設定されていても、開発サーバーはプルを実行しません (RequestBin で確認できます)。
github.php - 755 パーミッション。所有者はルートではありませんが、実行するchown username:group github.php
と 500 エラーが発生します。
スクリプトを実行した場合、パスワードを要求されず、スクリプトを停止できるダイアログはありません..単にわかりません。
手動でルートとしてログインしgit pull
、そのディレクトリの ssh で:
git pull
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 3 (delta 0)
Unpacking objects: 100% (3/3), done.
From github.com:test/testrepo
0e678d9..88b3237 master -> origin/master
Updating 0e678d9..88b3237
Fast-forward
test.html | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
root@echo [/home/username/public_html/dev/testrepo]#
そして、仕事は終わりました。私のファイルが更新されました。
アイデアはありますか?
apache が単独で php スクリプトを実行できないということでしょうか? また、root ではなくサーバーに SSH で接続し、php スクリプトを実行しようとすると、Permission denied (publickey) が表示されます。致命的: リモート エンドが予期せず電話を切りました