ソースコードを書いて それをバージョン管理する時、大抵履歴を書きます。
ここで、よく使われる履歴の残し方としては、以下の2通りでは無いかと思います。
- ChangeLogファイルに記入しておく
- commit(コミット)時、メッセージを記入しておく
昔から ChangeLog を眺めている事が多いのですが、リグレッションやChangeLogは不要?(1/2) − @ITを見ると、今風はcommit時にメッセージ記入なのかな?と思ってもいます。
で、自分はどうなのか?と言うと、
- ChangeLogみたいなファイルに履歴をまず書いておく。
- おもむろに、commit時 メッセージ入力欄に 上記ファイルの履歴内容をコピペする。
という少々、回りくどい事をしています。
いや、commit時メッセージの方が良いと思うんですよ。でも、中途半端な状態(ビルドOKやテストOKじゃない等)でcommitするのは、少々気に食わないというか何と言うか…。
まぁ、これは癖みたいなものなので、せめてcommitする時、ChangeLog履歴から自動で取得するようにしようかと思いました。
#!/bin/env python # -*- encoding: cp932 -*- """ file名は、make_changelog.py とでもしてください。 """ import sys import pysvn def main(): if len(sys.argv) < 2: raise "changelogのパスを指定してください" fpath = sys.argv[1] print >>sys.stderr, "changelog:", fpath client = pysvn.Client() txt = client.diff(fpath, fpath) lines = txt.split('\n')[5:] for s in lines: if (len(s) > 0) and (s[0] == '+'): print s[1:].rstrip() if __name__ == "__main__": main()
pysvnの導入方法は、pysvnを使って、ソースコードのリポジトリ情報を取得してみましょう - ふにゃるん を参照して頂くとして、以下のようにして使います。
- changelog.txt に履歴を記述する。
- '
python make_changelog.py changelog.txt > log.tmp
'として呼び出す。
これで、changelog.txtの追加分がlog.tmpに出力される。 - '
svn ci --file log.tmp
'として、log.tmpの内容をcommitする。
これで、少し楽になりました。