* Send all debug and verbose prints to stderr, reserving stdout for
authorJoey Hess <joey@kodama.kitenet.net>
Wed, 6 Feb 2008 18:37:59 +0000 (13:37 -0500)
committerJoey Hess <joey@kodama.kitenet.net>
Wed, 6 Feb 2008 18:37:59 +0000 (13:37 -0500)
  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.

debian/changelog
pristine-bz2
pristine-gz
pristine-tar

index d2efea2..b08790f 100644 (file)
@@ -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 <joeyh@debian.org>  Tue, 05 Feb 2008 12:54:27 -0500
 
index 2c8ad78..13c4b25 100755 (executable)
@@ -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 {
index aac3c36..d4f33a5 100755 (executable)
@@ -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 {
index fe2bee3..1b4e550 100755 (executable)
@@ -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;