6

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 を実行する機会があります

4

1 に答える 1

2

コミットコメントも解析できます。Git は空のコミットを許可します。ちょうど別のオプション。

于 2011-10-18T17:19:52.210 に答える