git addしてるファイルだけをwatsonでチェック

githubのissue管理などに便利なwatsonですが,通常だと*~などを含む全ファイルから[todo] -, [fix] -といったタグを探しに行ってしまいます.

これは嬉しくない動作だったので,git addしてあるファイルだけを追跡するようにしました. 以下の1行を$HOME/.bashrcの最後の行にでも書けばOKです.

gitリポジトリでのみ使う場合

alias watson='f=$(git ls-files) && watson -f $f'

gitリポジトリ以外では全ファイルを追跡する場合

alias watson='watson -f $(git ls-files)'

結果

「gitリポジトリでのみ使う場合」の設定での結果です.

before

[~/git/foo] $ watson 
...
[ o ] ./.travis.yml
[ o ] ./.travis.yml~   ## バックアップファイルも含め全ファイルが追跡されている
[ o ] ./CHANGES.txt
...

after

[~/git/foo] $ watson   # gitリポジトリなディレクトリ
...
[ o ] .travis.yml   ## git addされていない .travis.yml~ が除かれた
[ o ] CHANGES.txt
...


[~/tmp] $ watson   # gitリポジトリでないディレクトリではエラーを吐いて停止
fatal: Not a git repository (or any parent up to mount point /home)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

Version::NextっぽいPythonパッケージnextversion作りました

バージョン番号の管理に使えそうなPythonパッケージ, nextversion を作りました.

今のバージョン番号を文字列で与えると,次のバージョン番号(の最有力候補)が帰ってきます.

from nextversion import nextversion
nextversion('1.0a2')    # => '1.0a3'
nextversion('v1.0a2')   # => '1.0a3'  (normalized to compatible version with PEP 386)
nextversion('foo.0.3')  # => None     (impossible to normalize)

インストール

PyPI から拾ってこれます.

$ pip install nextversion

生成されるバージョン番号の規則

PEP 386 で提唱されているバージョン番号のフォーマットに従い, 次のバージョン番号が生成されます.

自分のつけているバージョン番号が PEP 386 に従ってるか調べるのにも便利かも.

使い所

Perlには同様の動作をするモジュール Version::Next があります. これがどう使われているかというと,例えば Minilla が使ってます.

Minillaは, minil release というPerlのモジュールをアップロードするコマンドを提供していて,このコマンドは自動的に次のバージョン番号をサジェストしてくれます. minnil release の役割はそれだけではなく,色んなファイルの中にある古いバージョン番号を新しいバージョン番号に変えてくれたり,ChangeLogを忘れずに編集するようにエディタを開いてくれたりします.

PythonにもPyPIへのリリース時に minil release みたいにできると便利だなと思い,その足がかりとして nextversion を作りました.

バグ報告など

https://github.com/laysakura/nextversion でお待ちしてます.