Thursday, 2 February 2006
RCS 履歴 (fj.comp.programming)
自分のソースのどの部分がどれくらい古いかを見ようと思って、RCS version を行頭に付けるってのを考えました。で、Rcs-Parser-0.02 っていう Perl module があるんで、それをちょっといじってみる。そのmodule を作った人も同じことを考えていたらしく、ほとんど undocument だが「そのもの」の関数notateを中に発見。
なんだが、地獄のように遅い.... 指定されたバージョンを取り出すだけなら、そこそこスピードなんだけど。RCS って、最新のバージョンから古いバージョンに遡ったdiff 履歴を管理しているので、「一旦、一番、古いバージョンまで再構成して、それから、逆に新しいものに辿って行く」というアルゴリズムになるらしい。それに「ずれるし」なんでだ? 短いものだと、それっぽく動くのに。
まぁ、いいや。必須なものってわけでもないし。また、後で。
ちなみに、こんな感じ。
use Rcs::Parser;
my $rcs = new Rcs::Parser;
my $ret = $rcs->load($ARGV[0]);
my $current = $rcs->recent_version;
my $note = $rcs->notate();
my $notes = $note->{$current}->{body};
my $doc = $rcs->{current_document};
for my $line ( sort { $a <=> $b } keys %{$notes} ) {
print $notes->{$line}->{origin},";?t";
print $doc->{body}->{$line}->{line};
}
まてよ、$notes って、もしかして、重複した行が入っているのか...
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment