From: Joey Hess Date: Wed, 6 Feb 2008 18:37:59 +0000 (-0500) Subject: * Send all debug and verbose prints to stderr, reserving stdout for X-Git-Tag: 0.9~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=fa54757256e9e4db5a268751d82b0e4e6194ddd8;p=tools%2Fpristine-tar.git * Send all debug and verbose prints to stderr, reserving stdout for outputting deltas etc. * pristine-tar commit was not generating deltas against the specified upstream branch, but against the unpacked contents of the source tarball. Fix it to use the upstream branch, ensuring that no matter what branch is given, the delta that is created can always recreate the source tarball. --- diff --git a/debian/changelog b/debian/changelog index d2efea2..b08790f 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,12 @@ pristine-tar (0.9) UNRELEASED; urgency=low * Add smart branching for commits. (Cyril Brulebois) * Prefer to commit to the ref that exactly matches what is specified at the command line. + * Send all debug and verbose prints to stderr, reserving stdout for + outputting deltas etc. + * pristine-tar commit was not generating deltas against the specified + upstream branch, but against the unpacked contents of the source tarball. + Fix it to use the upstream branch, ensuring that no matter what branch is + given, the delta that is created can always recreate the source tarball. -- Joey Hess Tue, 05 Feb 2008 12:54:27 -0500 diff --git a/pristine-bz2 b/pristine-bz2 index 2c8ad78..13c4b25 100755 --- a/pristine-bz2 +++ b/pristine-bz2 @@ -91,11 +91,11 @@ sub usage { } sub debug { - print "debug: @_\n" if $debug; + print STDERR "debug: @_\n" if $debug; } sub vprint { - print "pristine-bz2: @_\n" if $verbose; + print STDERR "pristine-bz2: @_\n" if $verbose; } sub doit { diff --git a/pristine-gz b/pristine-gz index aac3c36..d4f33a5 100755 --- a/pristine-gz +++ b/pristine-gz @@ -123,11 +123,11 @@ sub usage { } sub debug { - print "debug: @_\n" if $debug; + print STDERR "debug: @_\n" if $debug; } sub vprint { - print "pristine-gz: @_\n" if $verbose; + print STDERR "pristine-gz: @_\n" if $verbose; } sub doit { diff --git a/pristine-tar b/pristine-tar index fe2bee3..1b4e550 100755 --- a/pristine-tar +++ b/pristine-tar @@ -131,7 +131,7 @@ use constant BZIP2_METHOD_HUFFMAN => 0x68; my $verbose=0; my $debug=0; -my $keep=0; +my $keep=1; # Force locale to C since tar may output utf-8 filenames differently # depending on the locale. @@ -150,7 +150,7 @@ sub error { } sub message { - print "pristine-tar: @_\n"; + print STDERR "pristine-tar: @_\n"; } sub debug { @@ -294,10 +294,14 @@ sub recreatetarball { }, "$tempdir/workdir"); } - doit("tar", "cf", "$tempdir/recreatetarball", "--owner", 0, "--group", 0, + my $ret="$tempdir/recreatetarball"; + + doit("tar", "cf", $ret, "--owner", 0, "--group", 0, "--numeric-owner", "-C", "$tempdir/workdir", "--no-recursion", "--mode", "0644", - "--files-from", "$tempdir/manifest"); + "--files-from", "$tempdir/manifest"); + + return $ret; } sub gentar { @@ -336,9 +340,9 @@ sub gentar { close IN; } - recreatetarball($tempdir, getcwd, clobber_source => 0, %opts); + my $recreatetarball=recreatetarball($tempdir, getcwd, clobber_source => 0, %opts); my $out=(-e "$tempdir/wrapper") ? $tarball.".tmp" : $tarball; - doit("xdelta", "patch", "$tempdir/delta", "$tempdir/recreatetarball", $out); + doit("xdelta", "patch", "$tempdir/delta", $recreatetarball, $out); if (-e "$tempdir/wrapper") { my $type=`tar xOzf $tempdir/wrapper type`; @@ -384,9 +388,10 @@ sub genmanifest { sub gendelta { my $tarball=shift; my $delta=shift; + my %opts=@_; my $tempdir=tempdir(); - + my $stdout=0; if ($delta eq "-") { $stdout=1; @@ -440,8 +445,15 @@ sub gendelta { } genmanifest($tarball, "$tempdir/manifest"); - recreatetarball($tempdir, $sourcedir, clobber_source => 1); - my $ret=system("xdelta delta -0 --pristine $tempdir/recreatetarball $tarball $tempdir/delta") >> 8; + my $recreatetarball; + if (! exists $opts{recreatetarball}) { + my $recreatetarball=recreatetarball($tempdir, $sourcedir, clobber_source => 1); + } + else { + $recreatetarball=$opts{recreatetarball}; + } + + my $ret=system("xdelta delta -0 --pristine $recreatetarball $tarball $tempdir/delta") >> 8; # xdelta exits 1 on success if there were differences if ($ret != 1 && $ret != 0) { error "xdelta failed with return code $ret"; @@ -678,12 +690,12 @@ sub commit { my $tempdir=tempdir(); my ($sourcedir, $id)=export($upstream); genmanifest($tarball, "$tempdir/manifest"); - recreatetarball($tempdir, $sourcedir, clobber_source => 1, - create_missing => 1); + my $recreatetarball=recreatetarball($tempdir, $sourcedir, + clobber_source => 1, create_missing => 1); my $pid = open(GENDELTA, "-|"); if (! $pid) { # child - gendelta($tarball, "-"); + gendelta($tarball, "-", recreatetarball => $recreatetarball); exit 0; } local $/=undef;