2008年 01月 11日

svn log と Trac につけたはてなスターをつかって ChangeLog を自動生成するアイデア

svn2cl がアレなのはノイズが多いからだよなぁと思って (でも ChangeLog と svn log をどっちも書くのはめんどう)

 ~/coderepos/lang/perl/Config-Pit/trunk
$ changelog-with-hatenastar.rb
ChangeLog of http://svn.coderepos.org/share/lang/perl/Config-Pit/trunk

2008-01-09  SATOH Hiroh <cho45@lowreal.net>

        * [interface] @4310:

            Implement pipe function for output stdout (but tty)
            Always notice profile switching for ppit ui.


        * [interface] @4309:
                 like ruby pit

        * [bug] @4282:

            Add local not to violate global env.

あんま☆つけてなくておもしろくないというか、タグの changeset は trunk の log に残らないので release のログは工夫しないとだせないことに気付いた…… あとマルチユーザを考慮してないのでまずい (4390 は SATOH さん(笑)のコミットではない)

この方法の利点は、はてなスターによってあとからつけられるので、「このチェンジセットをもうすこし詳しくして ChangeLog に書きたい」みたいなのを簡単にできるところと、他の人のチェンジセットにも情報増やせるところ。ただ、はてなスターの quote は quote なのでブックマークレットとかつかって書かないといけないのはめんどい。

ちゃんと使うには

  • svn log に書く内容からタグを抽出 (簡単)
  • はてスタ簡単につけるブックマークレット (UI がめんどい)
  • 出力の形式をまともに (めんどい)

とかやらないといけない。ChangeLog を手書きするのと、svn log から抽出しつつ、はてスタで補足するのとではどっちが楽かってなんか微妙だ。


ここまで書いてきづいたけれど、ChangeLog を先に書いて、svn di ChangeLog した内容を svn ci 時のデフォルトにすれば、すくなくとも ChangeLog と svn log をどっちも書くのはめんどう は解決できるからそのほうがいい気がした。あれー

tags もみるようにして、出力を改善した。

開発してるときはコミットログにタグいれるのよくわすれるからあとからどうにでもなるのはいいかもなぁ、とおもってちょっと使ってみる (あたらしい gem で)

自由なスタークオート

location.href = "javascript:"+encodeURIComponent(uneval(function () {
	var orig = Hatena.Star.AddButton.prototype.addStar;
	Hatena.Star.AddButton.prototype.addStar = function (e) {
		if (e.shiftKey) {
			var q = prompt("Star quote:");
			var t = new Ten.Element("div", {style:{display:"none"}}, q);
			document.body.appendChild(t);
			var r = window.getSelection().selectAllChildren(t);
			orig.call(this, e);
			document.body.removeChild(t);
		} else {
			orig.call(this, e);
		}
	};
}))+"()";

OpenStruct で String キーの Hash と Symbol キーの Hash のめんどいのをどうにかする

p OpenStruct.new(:foo => "bar").foo
p OpenStruct.new("foo" => "bar").foo

どっちでもいけて便利ですね @config = OpenStruct.new(config) とかやっとけば自然とどっちにも対応できますね

userscripts.org でコマンドラインからスクリプトの追加/アップデート

$ sudo gem install userscripts_org
$ userjs create foobar.user.js
$ userjs update foobar.user.js

とかできるやつです。

ついでに linkuserjs.rb を統合してあります

$ userjs install foobar.user.js
# Fx で foobar.user.js をひらくだけ

$ userjs install -l foobar.user.js
# Fx で foobar.user.js をひらき、インストールされたあとに
# インストール済みのファイルを指定したファイルへの symlink にする

なんか説明しにくいのですが、ようは symlink にすると svn ci がすぐできるようになります。Mac のコードしか書いてないので他の OS だとうごかない (チェックさえしてないのでつけよう)

一応 Windows (cygwin) と Linux (firefox にパスが通っていること前提) のコードをいれました。テストしてないのでうごくかわからないのですが