2017-11-24 12 views
0

gitフック実行コード(commit-msgフック)から入力を取得しようとしています。しかし、ルビは入力点で停止できません。そして、入力のようにコードを実行すると、puts文のようになります。ここに私が試して失敗したコードがあります。Gitフック - Rubyコード - インタラクティブ入力

#!/usr/bin/env ruby 
require 'open3' 

def take_input_here 

    Open3.popen3("pwd", :chdir=>"/") {|stdin, stdout, stderr, thread| 
    p stdout.read.chomp #=> "/" 
    } 

    input_val = gets.chomp 
    puts input_val 
    puts 'Hellow World!' 
end 
take_input_here 
puts "Commit Aborted." 
Process.exit(1) 

誰かが私のテイクこのインタラクティブな入力を助けるか、他私のGitのフックを書くための優れた言語を提案してください。前もって感謝します。

答えて

0

ほとんどのGitフックは、Gitが情報を書き込むパイプから、またはstdinをターミナルから完全に切断してstdinで実行されます。 commit-msgフックはこの2番目のカテゴリに分類されます。

commit-msgフックでstdinを読むと、stdinが/dev/null(Linux/Unix)またはNUL:(Windows)に接続されているので、すぐにEOFが表示されます。

UNIX系システムでは、/dev/ttyを開こうとするとよいでしょう。もしGitが/dev/tty(いくつかの独立プロセス、例えばcron経由)または何か他の理由で読んでいる/dev/ttyが悪いものから実行されているなら、これは他の問題を引き起こす可能性があるので注意してください。 。

+0

ありがとうございます。私は別の方法で検索しなければならない。 :) –

関連する問題