動作の確認のみできる--dry-runモードをgit-releaseに付けた。--verboseと組み合わせて、設定の確認に使う。ついでに--help--versionも付けたので、minimistを使うようにした。

$ git release --verbose --dry-run patch
Inspecting increment part: patch
Finding Git root: c:\Users\Kyo\Sites\hail2u.net\src\css
Getting target configuration: done
Getting push configuration: true
Incrementing version in "style.scss:2": done (dry-run)
Saving "style.scss": done (dry-run)
Incrementing version in "test.html:72": done (dry-run)
Saving "test.html": done (dry-run)
Staging files: done (dry-run)
Commiting changes: done (dry-run)
Tagging commit: done (dry-run)
Pushing commit & tag: done (dry-run)

Bumped to 6.58.19, without errors (dry-run).

--verboseなしだと最後の行のみ出力される。minimistが優秀なので--verbose --dry-run-v -nでも-nvでもどちらでも大丈夫。

他にはCRやCR+LFのファイルへの対応とかも追加した。UTF-8以外のファイルへの対応は、設定増やしたりしなくちゃならない割りに自分が得るところがないのでやめた。ステージングとコミットを分けて、対象ファイルだけコミットされるようにしたり、git push origin HEAD v0.1.2などとしてカレント・ブランチと新しいタグだけpushするようにしたりも。


同じようなものとしてbumpversionというものがあった。こちらはGitに依存せず、独自の設定ファイルを使っていて、直接ファイルやバージョンを指定してインクリメントできたりと高機能だった。GitとMercurialを自動判別するのもすごい。ファイル全体からなんとなく探してインクリメントしてくれる仕様も楽そう。

特定のプログラミング言語に依存しない汎用のバージョン番号を上げるツールはあんまりない。需要はある気がするんだけれども、それぞれの言語にフィットしたものの方があまり考えずに使えるので良いのかな。かぶってるパッケージ名を変えたらリリースしてみようという気になってきた。