Whiteのふりーとーく

svnpatchwork - applylog

About this Page |過去分一覧

近頃版/another blog@hatena/Wiki/BBS

< svnpatchwork | svnpatchwork - 設定ファイルの外部化とか >

 

svnpatchwork - applylog

適用したもののログ一覧が見たいとか言われたりした結果作ってみた。

今のところ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);

TrackBack ping url:

名前

TrackBack:


御意見・御感想の宛先white@niu.ne.jp