ソースコードを書いて それをバージョン管理する時、大抵履歴を書きます。

ここで、よく使われる履歴の残し方としては、以下の2通りでは無いかと思います。

ChangeLogファイルに記入しておく

commit(コミット)時、メッセージを記入しておく



昔から ChangeLog を眺めている事が多いのですが、リグレッションやChangeLogは不要？（1/2） − ＠ITを見ると、今風はcommit時にメッセージ記入なのかな？と思ってもいます。

で、自分はどうなのか？と言うと、

ChangeLogみたいなファイルに履歴をまず書いておく。 おもむろに、commit時 メッセージ入力欄に 上記ファイルの履歴内容をコピペする。

という少々、回りくどい事をしています。

いや、commit時メッセージの方が良いと思うんですよ。でも、中途半端な状態(ビルドOKやテストOKじゃない等)でcommitするのは、少々気に食わないというか何と言うか…。

まぁ、これは癖みたいなものなので、せめてcommitする時、ChangeLog履歴から自動で取得するようにしようかと思いました。

""" 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( '

' )[ 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する。



これで、少し楽になりました。



