master をプッシュするたびに master ブランチをデプロイする post-receive フックがあります。
展開をオプションにしたいと思います。フックは、これを達成するために単純な 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
post-receive フックが stdin で引数を取得する方法のため、 read
ラインはユーザーからの入力のために一時停止せず、スクリプトは Y/N 応答を取得しようとして何度もループします。
/dev/tty
から具体的にリクエストすると、これが修正されると思いました。
read deploy_code < /dev/tty
ただし、入力がキーボードから来ていないため、スクリプトは無限にループします。
この状況で実際にキーボード入力を取得することは可能ですか?
編集:
ああ。実際には ssh が原因のようです。 < /dev/tty
出力を見て、I'm seen /dev/tty: No such device or addressを追加しました
そして、スクリプトをローカルで実行する場合、これを模倣できますが、ssh を介して:
ssh 127.0.0.1 "echo 40913e300c8bf4ed7ea91b5ef61a522f3be2c05f e2aabfc865547d8b494b76c96947bab0c62acfec refs/heads/master | /path/to/post-receive"
編集2:
したがって、-tオプションをsshに設定して、sshセッションでttyを有効にするようにttyを要求するか、サーバーのauthorized_keysファイルでキーごとに有効にすることができます
編集3:
~/bin/ssh-t 作成後
#!/bin/sh
ssh -tt "$@"
(ダブル -t オプションは tty を強制します)そしてそれを指すように GIT_SSH を設定すると、恐ろしい致命的なエラーが発生します: プロトコル エラー: 行の長さが正しくありません: 文字の後に 005 が続きます。 git を実行する機会があります