/[suikacvs]/dev/version/tool/bin/viewvclog2rcs.pl
Suika

Diff of /dev/version/tool/bin/viewvclog2rcs.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by wakaba, Tue Aug 14 09:52:33 2007 UTC revision 1.2 by wakaba, Tue Aug 14 11:22:49 2007 UTC
# Line 53  pos ($ent->{s}) = 0; Line 53  pos ($ent->{s}) = 0;
53  REV: while ($ent->{s} =~ m!<hr size=1 noshade>!gc) {  REV: while ($ent->{s} =~ m!<hr size=1 noshade>!gc) {
54    my $rev = '';    my $rev = '';
55    if ($ent->{s} =~ m!Revision!gc and    if ($ent->{s} =~ m!Revision!gc and
56        $ent->{s} =~ m!<a href="([^"]+)"\s*><b>([0-9.]+)</b></a>!gc) {        $ent->{s} =~ m!<a href="([^"]+)"[^<>]*><b>([0-9.]+)</b></a>!gc) {
57      my $uri = $dom->create_uri_reference ($1)      my $uri = $dom->create_uri_reference ($1)
58          ->get_absolute_reference ($log_uri)->uri_reference;          ->get_absolute_reference ($log_uri)->uri_reference;
59      $rev = $2;      $rev = $2;
# Line 63  REV: while ($ent->{s} =~ m!<hr size=1 no Line 63  REV: while ($ent->{s} =~ m!<hr size=1 no
63        $text->{$rev} = $revent->{s};        $text->{$rev} = $revent->{s};
64      }      }
65    
66      unless (defined $rcs->{admin}->{head}) {      $rcs->{admin}->{head} ||= $rev;      
       $rcs->{admin}->{head} = $rev;        
       $rcs->{deltatext}->{$rev}->{text} = $text->{$rev};  
     }  
67    }    }
68    
69    if ($ent->{s} =~ m!<i>\w+ (\w+)\s*(\d+)\s*(\d+):(\d+):(\d+) (\d+) UTC</i> \([^()]+\) by <i>([^<>]+)</i>!gc) {    if ($ent->{s} =~ m!<i>\w+ (\w+)\s*(\d+)\s*(\d+):(\d+):(\d+) (\d+) UTC</i> \([^()]+\) by <i>([^<>]+)</i>!gc) {
# Line 84  REV: while ($ent->{s} =~ m!<hr size=1 no Line 81  REV: while ($ent->{s} =~ m!<hr size=1 no
81    if ($ent->{s} =~ m[\G<br>Branch:((?>(?!<(?>[bh]r|pre)).)+)]gcs) {    if ($ent->{s} =~ m[\G<br>Branch:((?>(?!<(?>[bh]r|pre)).)+)]gcs) {
82      my $b = $1;      my $b = $1;
83      while ($b =~ m!><b>([^<>]+)</b></a>!gc) {      while ($b =~ m!><b>([^<>]+)</b></a>!gc) {
84        push @{$rcs->{delta}->{$rev}->{branches} ||= []}, $1        my $branch = $1;
85            unless $1 eq 'MAIN';        if ($branch ne 'MAIN') {
86            my $rev = $rev;
87            $rev =~ s/\.(\d+)\.\d+\z//;
88            push @{$rcs->{admin}->{symbols} ||= []}, [$branch => "$rev.0.$1"];
89          }
90      }      }
91      $ent->{s} =~ m[(?=<(?>br|pre)>)]gc;      $ent->{s} =~ m[(?=<(?>br|pre)>)]gc;
92    }    }
93    
94      if ($ent->{s} =~ m[\G<br>Branch point]gcs) {
95        $ent->{s} =~ m[(?=<(?>br|pre)>)]gc;
96      }
97    
98    if ($ent->{s} =~ m[\G<br>CVS Tags:((?>(?!<(?>[bh]r|pre)).)+)]gcs) {    if ($ent->{s} =~ m[\G<br>CVS Tags:((?>(?!<(?>[bh]r|pre)).)+)]gcs) {
99      my $b = $1;      my $b = $1;
100      while ($b =~ m!><b>([^<>]+)</b></a>!gc) {      while ($b =~ m!><b>([^<>]+)</b></a>!gc) {
101        my $rev = $branches->{$1} ? "$rev.0.".((++$branch_rev->{$rev})*2) : $rev;        my $rev = $branches->{$1} ? "$rev.0.".((++$branch_rev->{$rev})*2) : $rev;
102        push @{$rcs->{admin}->{symbols} ||= []}, [$1 => $rev]        if ($1 eq 'HEAD') {
103            unless $1 eq 'HEAD'; ## TODO          $rcs->{admin}->{head} = $rev;
104            $rcs->{deltatext}->{$rev}->{text} = $text->{$rev};
105          } else {
106            push @{$rcs->{admin}->{symbols} ||= []}, [$1 => $rev];
107          }
108      }      }
109      $ent->{s} =~ m[(?=<(?>br|pre)>)]gc;      $ent->{s} =~ m[(?=<(?>br|pre)>)]gc;
110    }    }
111    
112      if ($ent->{s} =~ m[\G<br>Branch point]gcs) {
113        $ent->{s} =~ m[(?=<(?>br|pre)>)]gc;
114      }
115    
116    if ($ent->{s} =~ m!\G<br>Changes since <b>([0-9.]+):!gc) {    if ($ent->{s} =~ m!\G<br>Changes since <b>([0-9.]+):!gc) {
117      $rcs->{delta}->{$rev}->{next} = $1;      my $from_rev = $1;
118      $text_from->{$1} = $rev;      if ($rev =~ /\A[0-9]+\.[0-9]+\z/) {
119          $rcs->{delta}->{$rev}->{next} = $from_rev;
120          $text_from->{$from_rev} = $rev;
121        } elsif ($from_rev =~ /\A[0-9]+\.[0-9]+\z/) {
122          push @{$rcs->{delta}->{$from_rev}->{branches} ||= []}, $rev;
123          $text_from->{$rev} = $from_rev;
124        } else {
125          $rcs->{delta}->{$from_rev}->{next} = $rev;
126          $text_from->{$rev} = $from_rev;
127        }
128    }    }
129    
130    if ($ent->{s} =~ m!<pre>(.*?)</pre>!gcs) {    if ($ent->{s} =~ m!<pre>(.*?)</pre>!gcs) {
# Line 112  REV: while ($ent->{s} =~ m!<hr size=1 no Line 134  REV: while ($ent->{s} =~ m!<hr size=1 no
134    $rcs->{delta}->{$rev}->{state} = 'Exp';    $rcs->{delta}->{$rev}->{state} = 'Exp';
135  } # REV  } # REV
136    
137    delete $text_from->{$rcs->{admin}->{head}};
138    
139    my %symbol;
140    for (@{$rcs->{admin}->{symbols} || []}) {
141      $symbol{$_->[0]} = $_->[1];
142    }
143    $rcs->{admin}->{symbols} = [map {[$_ => $symbol{$_}]} keys %symbol];
144    
145    
146  require File::Temp;  require File::Temp;
147  require IPC::Open2;  require IPC::Open2;
148  while (keys %$text_from) {  while (keys %$text_from) {
149    my $rev = each %$text_from;    my $rev = each %$text_from;
150      my $any;
151    if (defined $text->{$text_from->{$rev}}) {    if (defined $text->{$text_from->{$rev}}) {
152        $any = 1;
153      my $from_file = new File::Temp;      my $from_file = new File::Temp;
154      binmode $from_file;      binmode $from_file;
155      $from_file->print ($text->{$text_from->{$rev}});      $from_file->print ($text->{$text_from->{$rev}});
# Line 134  while (keys %$text_from) { Line 167  while (keys %$text_from) {
167      $rcs->{deltatext}->{$rev}->{text} = <$diffin>;      $rcs->{deltatext}->{$rev}->{text} = <$diffin>;
168      delete $text_from->{$rev};      delete $text_from->{$rev};
169    }    }
170      last unless $any;
171  }  }
172    
173  print $rcs->stringify;  print $rcs->stringify;

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

[email protected]
ViewVC Help
Powered by ViewVC 1.1.24