gitのローカルリポジトリからお目当のタグを抽出する
今日は時間がないので渾身かも、と思ったコードに数行コメントつけてPOST!
- シェルは便利なんだけどシェルの結果の文字列を気軽に処理したい時、ruby書いたことある人にとってはrubyがとても楽
- rubyだとシェルのコマンドを
%x( command )
などで実行できる ruby xx.rb --params
などのコマンドライン引数はARGV
に配列で入ってる- 一時的にディレクトリを移動したいだけなら
Dir.chdir
にブロック渡すのが便利 - 他の人とディレクトリ構造が違う(ホームディレクトリなどは?) =>
ENV['HOME']
などENV
から取れるよ git fetch remote-repo --tags
で現在のステージの内容などを気にせずにgit tag
の出力だけ更新できるよgit tag
の出力はgit FETCH_HEAD
にあるtag
と一致していて*1、要するにgit
の管理対象のファイルの内容を読み書きしているわけではないので- 作業途中で同期のための雑な
git stash
しなくていいの嬉しい!
latest_tag = Dir.chdir("#{ENV['HOME']}/woshidan-test/sample-repo") do if fetch_remote puts "fetch tags from remote repository ..." %x( git fetch remote-repo --tags ) # ローカルリポジトリを最新にするコマンドを挟むことで自分を信じないことができる puts "done" end %x( git tag ).split("\n").select { |tag| tag.match(/お目当のタグの正規表現/) }.last end
参考
- http://uxmilk.jp/12947
- https://www.xmisao.com/2014/03/01/how-to-execute-a-shell-script-in-ruby.html
- http://blog.codebook-10000.com/entry/20140325/1395673232
*1:このファイルから出力されているわけではないだろうが