2017-10-10 12 views
0

Laravel Artisanのコマンドは素晴らしいですし、対話型の質問もあります。コマンドラインから実行するとうまくいきます。Laravel ArtisanのインタラクティブプロンプトがGitのフックで動作しない

しかし、Gitフック(Bashスクリプト)から呼び出された場合、 "confirm"や "ask"などのインタラクティブな質問は表示されません。Artisanコマンドがどのコンテキストであるかを知るだけでいいです私の "確認"または他のインタラクティブな質問を表示できるかどうかを確認します。出来ますか?以下

マイコード:

#!/bin/bash 
php artisan some:command 
+0

どのOSで試してみますか...コードの一部を共有できますか?ログファイルにエラーがありますか?あなたはコマンドラインで何をやったのですか?bashはCLです。 – Webdesigner

+0

ご迷惑をおかけいたします。 – kratos

+0

私はあなたのことを正しく理解していますか? 'git push production'をローカルホストから呼び出すとgitはgit hookで行われた職人コマンドのコマンドプロンプトで応答する必要がありますか?または何をしようとしていますか? – Webdesigner

答えて

1

Gitは、非対話型シェルでフックスクリプトを実行し、そのスクリプトの標準入力は、端末に接続されていません。

#!/bin/sh 
# This is a git hook. 

# Connect terminal to STDIN... 
exec < /dev/tty 

# Run any interactive commands... 
php artisan some:command 

# Close STDIN... 
exec <&- 

私たちは、スクリプトで使用可能なファイル記述子を制御するには、この文脈でexecを使用します。我々は、コマンドと対話することができるように、我々はフックスクリプトのプロセスに端末をリダイレクトすることができます。 execの詳細については、this questionまたはPOSIX specを参照してください。

このテクニックは、コマンドラインから正常に動作するはずです。 gitをラップまたは相互作用する他のツールを使用すると、問題が発生する可能性があります。

関連する問題