マスターを押すたびに私たちのマスターブランチを配備するポスト受信フックがあります。リモートgitポスト受信フックの一部としてユーザ入力を受け入れることは可能ですか?
デプロイメントをオプションにしたいと思います。フックはこれを達成するための単純なY/N応答を求める。以下、bashの擬似コード:
echo "Should I deploy this code now? Enter Y/N"
read deploy_code
case ${deploy_code} in
"Y") do_a_deploy ;;
"N") exit ;;
*) # ask the question again if not Y or N ;;
esac
方法のためのポスト受信ラウンドとラウンドを取得しようとしているユーザからの入力のために一時停止しませんread
行を標準入力にその引数を取得し、スクリプトはループフックをY/N答え。
具体的には/dev/tty
からリクエストするとこれが解決されると考えられました。
read deploy_code < /dev/tty
しかし、入力がキーボードから来ていないので、それでもスクリプトは無限にループします。
この状況で実際にキーボード入力が可能ですか?
編集: Ah。それは実際にはsshのせいだと思われます。そのようなデバイスまたは
に対処しないと、私はローカルでスクリプトを実行する場合、私はこれを模倣することができますが、ssh越し:今私はは/ dev/ttyのを見ている< /dev/tty
追加した出力を見てみると
ssh 127.0.0.1 "echo 40913e300c8bf4ed7ea91b5ef61a522f3be2c05f e2aabfc865547d8b494b76c96947bab0c62acfec refs/heads/master | /path/to/post-receive"
編集2:
だから私はenabling tty in a ssh sessionごとに端末を要求するためにsshをする-tオプションを設定するか、または私はキーごとに、サーバー上のauthorised_keysファイルでそれを可能にすることができる
編集3:
〜/ binに/ sshを-T
#!/bin/sh
ssh -tt "[email protected]"
を作成(ダブル-tオプションがttyを強制)し、それを指すようにGIT_SSHを設定した後、私は今ですが致命的になっている:プロトコルエラー:行の長さが正しくない文字:に続いて、.bash_profileやそれに似たエコーがあり、gitを実行する前に005であると思われる。
これは興味深いオプションです。 – jaygooby