0

WindowsでGitを使用していて、ワークフローに単体テストを含めようとしています。コミットメッセージにキーワードが含まれている場合。commit-msgフックは、PowershellコマンドをトリガーしていくつかのNunitテストを実行します。

これはフックの私のルビーコードです

#!/usr/bin/env ruby
message_file = ARGV[0]
message = File.read(message_file)

puts "The commit message is " + message

$regex = /(#runtest)/

if $regex.match(message)
    exec 'powershell.exe -ExecutionPolicy RemoteSigned -Command {RunNunitTestCase}'
end

ただし、変更をコミットすると、結果は次のようになります。exec行が実行されましたが、何もしません。

PS D:\testfolder> git commit -am '#runtest'
The commit message is #runtest
[authorupdate b14878d] 123
 1 files changed, 1 insertions(+), 0 deletions(-)

私はルビーとPowerShellに不慣れです。このワークフローが実行可能であるか、より良いアプローチがある場合は、遠慮なくコメントしてください。

ありがとうございました。

4

2 に答える 2

2

中括弧はエスケープする必要があります。

exec "powershell.exe -ExecutionPolicy RemoteSigned -Command & \{RunNunitTestCase\}
于 2012-08-24T06:14:53.680 に答える
1

exec行を次のようにして正確なスクリプトを試しました。

exec 'powershell.exe -ExecutionPolicy RemoteSigned -Command gps'

gpsそしてそれは私がしたときの出力を印刷しましたgit commit -m "#runtest"

したがって、コマンドを実行し、機能します。

実行しているものがすべて機能することを確認してください。PowerShell行を取得し、コマンドラインで直接試してください。

于 2012-04-19T09:14:33.027 に答える