近頃版/another blog@hatena/Wiki/BBS
< svnpatchwork | svnpatchwork - 設定ファイルの外部化とか >
適用したもののログ一覧が見たいとか言われたりした結果作ってみた。
今のところstableBranchの開始点だけが指定できる仕様。
というあたりが目先のわかってる改良点かなあ。
_applylog.pl
安定版側の指定されたリビジョン以降に適用された修正について、trunk側のログをまとめて出力する。安定版側のapply.plの自動生成コメントに依存する。
#!/usr/bin/perl
use strict;
my $trunk = 'svn/path/to/trunk';
my $build = 'svn/path/to/stableBranch';
if($ARGV[0] && $ARGV[0] !~ /^\d+$/){
warn "wrong argument: $ARGV[0]\n";
}
if(@ARGV == 0){
print "$0 revision\n";
exit;
}
my $base_rev = $ARGV[0];
my(%commited);
open(IN,"svn log -r $base_rev:HEAD $build |");
while(<IN>){
next if(/^r\d+ \| \w+ \| \d{4}-\d{2}-\d{2} \d\d:\d\d:\d\d/);
while(/\d+:(\d+)/g){
$commited{$1} = 1;
}
}
close(IN);
exit if scalar(keys %commited) == 0;
my $oldest = (sort {$a <=> $b} keys %commited)[0];
print $oldest,"\n";
open(IN,"svn log -r $oldest:HEAD $trunk |");
my $isTarget = 0;
while(<IN>){
if(/^r(\d+) \|/){
if($commited{$1}){
$isTarget = 1;
}else{
$isTarget = 0;
}
}
print if $isTarget;
}
close(IN);