7

(免責事項: 以前に同様の質問を投稿しました: In a ruby​​ script, how to ask git to open its message editor . この質問はより一般的であり、他のプログラマーにも当てはまる可能性があるため、別の質問として投稿することにしました。 .ただし、ここでの回答が適用されるかどうかわからないため、git 関連の質問は保留しました.これに対するルールがある場合は、お知らせください)

私は現在、https: //gist.github.com/jbenet/ee6c9ac48068889b0912 で説明されている「リベース + no-ff マージ」ワークフローを自動化するコマンドライン ruby​​ gem に取り組んでいます。この gem の WIP コードはhttps://github.com/gsmendoza/git_pretty_accept/tree/git_pretty_acceptにあります。gem は次のようになります。

`vi some_temp_file.txt`
`git co master`
`git pull`
`git co pull_request`
`git rebase master`
`git co master`

merge_message = File.read('some_temp_file.txt')
`git merge --message "#{merge_message}" --no-ff pull_request`

`git push`
`git branch -d pull_request`
`git push origin:pull_request`

これらの git コマンドを ruby​​ 経由で実行しようとすると、vi some_temp_file.txt期待どおりにテキスト エディターが開きません。代わりに、「Vim: 警告: 出力先が端末ではありません」という警告が表示され、スクリプトがハングします。

何か案は?

4

2 に答える 2

7

ruby スクリプト内から bash コマンドを実行するには、次のsystem()コマンドを使用できます: http://www.ruby-doc.org/core-2.0.0/Kernel.html#method-i-system

これにより、特定のケースで目的の動作が生成されるはずです。

#!/usr/bin/ruby
system('vim', 'some_temp_file.txt')

コマンドラインからこのスクリプトを実行すると、指定されたファイルが Vim で開きます。

于 2013-11-09T07:44:41.170 に答える