[svk-commit] r2243 - in trunk: utils

nobody at bestpractical.com nobody at bestpractical.com
Wed Dec 20 08:02:12 EST 2006


Author: clkao
Date: Wed Dec 20 08:02:10 2006
New Revision: 2243

Modified:
   trunk/   (props changed)
   trunk/utils/pullyu

Log:
 r7401 at ubuntu (orig r2237):  clkao | 2006-12-13 14:33:03 +0800
 Fix pullyu to use new SVN::Dump api.


Modified: trunk/utils/pullyu
==============================================================================
--- trunk/utils/pullyu	(original)
+++ trunk/utils/pullyu	Wed Dec 20 08:02:10 2006
@@ -10,8 +10,7 @@
 
 die unless GetOptions ("r|revision=s@" => \$revspec);
 
-# XXX: requires patch to svn::dump 0.01
-use SVN::Dump;
+use SVN::Dump 0.03;
 
 my $repospath = shift or die "repospath required.\n";
 my $path      = shift or die "path required.\n";
@@ -49,22 +48,10 @@
 
 my $prefix = substr( $m->path, 1 );
 
-print bless(
-    {   headers => bless(
-            { 'SVN-fs-dump-format-version' => 3 },
-            'SVN::Dump::Headers'
-        )
-    },
-    'SVN::Dump::Record'
-)->as_string;
-print bless(
-    {   headers =>
-            bless( { 'UUID' => $m->source_uuid }, 'SVN::Dump::Headers' )
-    },
-    'SVN::Dump::Record'
-)->as_string;
-
-my $prev;
+print SVN::Dump::Headers->new(
+            { 'SVN-fs-dump-format-version' => 3 } )->as_string;
+print SVN::Dump::Headers->new({ 'UUID' => $m->source_uuid })->as_string;
+my $prev = $r->[0] ? 0 : undef;
 for my $rev (@revs) {
     $pool->clear;
 
@@ -78,11 +65,10 @@
     seek $buf, 0, 0;
     my $dump = SVN::Dump->new( { fh => $buf } );
     while ( my $record = $dump->next_record() ) {
-        next if exists $record->{headers}{'SVN-fs-dump-format-version'};
-        next if exists $record->{headers}{'UUID'};
+        next if $record->type eq 'format' || $record->type eq 'uuid';
 	# padding
-	if ($prev) {
-	    for my $pad ($prev+1 .. $rrev-1) {
+	if (!defined $prev || $prev) {
+	    for my $pad (($prev||0)+1 .. $rrev-1) {
 		print pad_rev($pad)->as_string;
 		++$prev;
 	    }
@@ -90,26 +76,27 @@
 
         my $translate = sub {
             my $rec = shift;
-            $rec->{headers}{'Revision-number'} = $rrev
-                if exists $rec->{headers}{'Revision-number'};
+            $rec->set_header('Revision-number' => $rrev)
+                if $rec->get_header('Revision-number');
+
+	    if (my $rev = $rec->get_header('Node-copyfrom-rev')) {
+		$rec->set_header('Node-copyfrom-rev' =>
+				 scalar $m->find_remote_rev( $rev ) );
+	    }
+
+	    if (my $path = $rec->get_header('Node-copyfrom-path')) {
+		$path =~ s{^\Q$prefix\E/?}{} or die "$path untranslatable";
+		$rec->set_header('Node-copyfrom-path' => $path );
+	    }
 
-            $rec->{headers}{'Node-copyfrom-rev'}
-                = $m->find_remote_rev( $rec->{headers}{'Node-copyfrom-rev'} )
-                if exists $rec->{headers}{'Node-copyfrom-rev'};
-
-            $rec->{headers}{'Node-copyfrom-path'} =~ s{^\Q$prefix\E/?}{}
-                if exists $rec->{headers}{'Node-copyfrom-path'};
-
-            if ( exists $rec->{property} ) {
-                my $prop = $rec->{property};
-                delete $prop->{hash}{'svm:headrev'};
-                $prop->{keys}
-                    = [ grep { $_ ne 'svm:headrev' } @{ $prop->{keys} } ];
+            if ( my $prop = $rec->get_property_block ) {
+                $prop->delete('svm:headrev');
             }
 
-            if ( $rec->{headers}{'Node-path'} ) {
-                $rec->{headers}{'Node-path'} =~ s{^\Q$prefix\E/?}{}
-                    or die $rec->{headers}{'Node-path'};
+            if ( my $path = $rec->get_header('Node-path') ) {
+		$path =~ s{^\Q$prefix\E/?}{}
+                    or die "$path not translatable";
+                $rec->set_header('Node-path' => $path);
             }
 
         };
@@ -126,26 +113,7 @@
 sub pad_rev {
     my $rev = shift;
     my $pad = SVN::Dump::Record->new;
-    $pad->set_headers(SVN::Dump::Headers->new);
-    $pad->{headers}{ 'Revision-number' } = $rev;
+    $pad->set_headers_block(SVN::Dump::Headers->new( { 'Revision-number' => $rev }) );
     return $pad;
 }
 
-sub recal_header {
-    my $record = shift;
-    my ( $proplength, $textlength ) = ( 0, 0 );
-    if ( exists $record->{property} ) {
-        $record->{headers}{'Prop-content-length'}
-            = length( $record->{property}->as_string );
-    }
-    if ( exists $record->{text} ) {
-        $record->{headers}{'Text-content-length'}
-            = length( $record->{property}->as_string );
-    }
-    recal_header($record->{included})
-	if exists $record->{included};
-
-    if ( $record->{headers}{'Content-length'} ) {
-        $record->{headers}{'Content-length'} = $textlength + $proplength;
-    }
-}


More information about the svk-commit mailing list