-1

メッセージなしでgitでコミットしようとすると、シェルでエディターが開き、エディターを閉じると、gitがコンテンツを読み取ります。

私はまったく同じものを作りたいのですが、phpで。

gitソース(https://github.com/git/git/blob/master/editor.cuse_shell )にあるように、フラグをtrueに設定してプロセスを開始するだけです。PHPでこれを実現するにはどうすればよいですか?また、gitがSIGINTおよびSIGQUITシグナルを無視するように設定していることもわかります。PHPでどのように行うことができますか?

4

1 に答える 1

1

shell_exec()シェルでプロセスを生成します: http://php.net/shell_exec

シグナルを処理するにpcntl_signal()は、pcntl 拡張を必要とする を使用する必要があります: http://php.net/manual/en/function.pcntl-signal.php

編集するファイルを開き、編集した内容を表示する完全な例:

$fh = fopen('tmp_file', 'w');
fwrite($fh, "Hello!");
fclose($fh);

shell_exec("nano tmp_file > /dev/tty < /dev/tty");

$data = file_get_contents('tmp_file');
unlink('tmp_file');
echo "You entered: $data\n";

プロセスをインタラクティブにするには、入力と出力をリダイレクトする必要があります/dev/tty(そうしないと、エディターによってはハングするだけです)。

于 2013-03-22T18:06:20.780 に答える