0

私のワークフローは非常に単純です。

  1. ローカル:

mkdir testrepo && git init && git add . && git commit -m 'commit X' && git push -u origin master

よし、github からの私のレポが更新されます。

  1. 開発サーバー:

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) が表示されます。致命的: リモート エンドが予期せず電話を切りました

4

2 に答える 2

4

あなたが試すかもしれない別のことは、あなたのユーザー名とパスワードを https で入力することです。

https://username:password@github.com/user/reponame.git

この方法では、実際に SSH で接続する必要はありません。これは、リモート リポジトリ サーバーからプルする場合です。リモートを追加するときは、これらのパラメーターを必ず追加してください。

それ以外の場合は、サーバーで ssh キーを作成し、デプロイ キーとして GitHub にリンクします。ssh キーを作成するときは、パスワードを入力しないようにしてください。そうしないと、認証フェーズを通過できないという同じ問題が発生します。

于 2012-11-19T21:39:49.067 に答える
3

これは、'git pull' を実行しない場合、パスワードを入力する必要があるためです。ログイン(ssh)すると、パスワードなしでアクセスできると思います。このリンクを参照してください: http://wiki.mediatemple.net/w/(gs):GitHub

ガイドへのリンク: http://seancoates.com/blogs/deploy-on-push-from-github

于 2012-11-19T20:17:08.920 に答える