chiark / gitweb /
docs for rpush
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 6a3f7b7626c97c91150d8ebf329f6bd8b11b850f..448412e242f218c12a3c32f0ce5efb724d86d7c1 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -28,7 +28,6 @@ use File::Basename;
 use Dpkg::Version;
 use POSIX;
 use IPC::Open2;
-use File::Temp;
 
 our $our_version = 'UNRELEASED'; ###substituted###
 
@@ -172,8 +171,8 @@ sub badproto ($$) {
     fail "protocol violation; $m not expected";
 }
 
-sub protocol_expect ($&) {
-    my ($fh, $match) = @_;
+sub protocol_expect (&$) {
+    my ($match, $fh) = @_;
     local $_;
     $_ = <$fh>;
     defined && chomp or badproto $fh, "eof";
@@ -209,7 +208,7 @@ sub protocol_receive_file ($$) {
     my ($fh, $ourfn) = @_;
     open PF, ">", $ourfn or die "$ourfn: $!";
     for (;;) {
-       protocol_expect \*STDIN, { m/^data-block (.*})$|data-end$/ };
+       protocol_expect { m/^data-block (.*})$|data-end$/ } \*STDIN;
        length $1 or last;
        my $d = protocol_read_bytes \*STDIN, $1;
        print PF $d or die $!;
@@ -240,14 +239,14 @@ sub responder_receive_files ($@) {
     foreach my $fn (@ourfns) {
        protocol_receive_file \*STDIN, $fn;
     }
-    protocol_expect \*STDIN, { m/^files-end$/ };
+    protocol_expect { m/^files-end$/ } \*STDIN;
 }
 
 #---------- remote protocol support, initiator ----------
 
 sub initiator_expect (&) {
     my ($match) = @_;
-    protocol_expect \*RO, &$match;
+    protocol_expect { &$match } \*RO;
 }
 
 #---------- end remote code ----------
@@ -290,13 +289,13 @@ sub shellquote {
            push @out, $_;
        }
     }
-    return join '', @out;
+    return join ' ', @out;
 }
 
 sub printcmd {
     my $fh = shift @_;
     my $intro = shift @_;
-    print $fh $intro or die $!;
+    print $fh $intro," " or die $!;
     print $fh shellquote @_ or die $!;
     print $fh "\n" or die $!;
 }
@@ -372,6 +371,7 @@ main usages:
   dgit [dgit-opts] fetch|pull [dgit-opts] [suite]
   dgit [dgit-opts] build [git-buildpackage-opts|dpkg-buildpackage-opts]
   dgit [dgit-opts] push [dgit-opts] [suite]
+  dgit [dgit-opts] rpush build-host:build-dir ...
 important dgit options:
   -k<keyid>           sign tag and package with <keyid> instead of default
   --dry-run -n        do not change anything, but go through the motions
@@ -1089,7 +1089,7 @@ sub push_parse_changelog ($) {
     return ($clogp, $cversion, $tag, $dscfn);
 }
 
-sub push_parse_dsc ($$) {
+sub push_parse_dsc ($$$) {
     my ($dscfn,$dscfnwhat, $cversion) = @_;
     $dsc = parsecontrol($dscfn,$dscfnwhat);
     my $dversion = getfield $dsc, 'Version';
@@ -1115,6 +1115,8 @@ sub push_mktag ($$$$$$$$) {
                " does not match changelog \`$clogp->{$field}'";
     }
 
+    my $cversion = getfield $clogp, 'Version';
+
     # We make the git tag by hand because (a) that makes it easier
     # to control the "tagger" (b) we can do remote signing
     my $authline = clogp_authline $clogp;
@@ -1154,7 +1156,7 @@ sub sign_changes ($) {
     if ($sign) {
        my @debsign_cmd = @debsign;
        push @debsign_cmd, "-k$keyid" if defined $keyid;
-       push @debsign_cmd, "-p$pgp[0]" if $pgp[0] ne 'gpg';
+       push @debsign_cmd, "-p$gpg[0]" if $gpg[0] ne 'gpg';
        push @debsign_cmd, $changesfile;
        runcmd_ordryrun @debsign_cmd;
     }
@@ -1225,7 +1227,7 @@ sub dopush () {
        }
     }
 
-    responder_send_file('changes',$changesfn);
+    responder_send_file('changes',$changesfile);
 
     my $tfn = sub { ".git/dgit/tag$_[0]"; };
     my ($tagobjfn) =
@@ -1259,7 +1261,7 @@ sub dopush () {
        my $dryrunsuffix = $dryrun ? ".tmp" : "";
        responder_receive_files('signed-dsc-changes',
                                "../$dscfn$dryrunsuffix",
-                               "$changesfile$dryrupnsuffix");
+                               "$changesfile$dryrunsuffix");
     } else {
        sign_changes $changesfile;
     }
@@ -1384,7 +1386,7 @@ sub cmd_remote_push_responder {
     die unless @rargs;
     my ($dir) = @rargs;
     chdir $dir or die "$dir: $!";
-    $we_are_remote = 1;
+    $we_are_responder = 1;
     $|=1;
     responder_send_command("dgit-remote-push-ready");
     &cmd_push;
@@ -1417,7 +1419,7 @@ sub cmd_rpush {
     $dir =~ s{^-}{./-};
     my @rargs = ($dir);
     my @rdgit;
-    push @rdgit, @dgit
+    push @rdgit, @dgit;
     push @rdgit, @ropts;
     push @rdgit, (scalar @rargs), @rargs;
     push @rdgit, @ARGV;
@@ -1483,11 +1485,11 @@ sub i_localname_dsc {
     ($i_clogp, $i_version, $i_tag, $i_dscfn) =
        push_parse_changelog 'remote-changelog.822';
     die if $i_dscfn =~ m#/|^\W#;
-    return $dscfn;
+    return $i_dscfn;
 }
 
 sub i_want_signed_tag {
-    defined $i_param{'head'} && defined $dscfn
+    defined $i_param{'head'} && defined $i_dscfn
        or badproto \*RO, "sequencing error";
     my $head = $i_param{'head'};
     die if $head =~ m/[^0-9a-f]/ || $head !~ m/^../;