From: Ian Jackson Date: Thu, 26 Sep 2013 00:57:47 +0000 (+0100) Subject: wip changes for remote push - introduce calls to responder_* functions, currently... X-Git-Tag: debian/0.16_experimental2^2~23 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=commitdiff_plain;h=20130eef1751401dbdf64149806b73a4a0b88764 wip changes for remote push - introduce calls to responder_* functions, currently noops, nfc --- diff --git a/dgit b/dgit index bee98b92..a47db911 100755 --- a/dgit +++ b/dgit @@ -42,6 +42,7 @@ our $ignoredirty = 0; our $noquilt = 0; our $existing_package = 'dpkg'; our $cleanmode = 'dpkg-source'; +our $we_are_responder; our %format_ok = map { $_=>1 } ("1.0","3.0 (native)","3.0 (quilt)"); @@ -124,6 +125,26 @@ sub progress { print @_, "\n"; } +sub responder_send_file ($$) { + my ($keyword, $ourfn) = @_; + return unless $we_are_responder; + die "responder send file $keyword $ourfn\n"; +} + +sub responder_receive_files ($@) { + my ($keyword, @ourfns) = @_; + die unless $we_are_responder; + die 'nyi'; +} + +sub responder_send_command ($) { + my ($command) = @_; + return unless $we_are_responder; + # called even without $we_are_responder + print DEBUG "responder command $command\n"; + die; +} + sub url_get { if (!$ua) { $ua = LWP::UserAgent->new(); @@ -910,8 +931,6 @@ sub push_parse_changelog ($) { my $clogp = Dpkg::Control::Hash->new(); $clogp->load($clogpfn); - responder_send_file('parsed-changelog', $clogpfn); - $package = getfield $clogp, 'Source'; my $cversion = getfield $clogp, 'Version'; my $tag = debiantag($cversion); @@ -986,16 +1005,20 @@ sub dopush () { print DEBUG "actually entering push\n"; prep_ud(); - runcmd shell_cmd "exec >.git/dgit/changelog.822.tmp", - qw(dpkg-parsechangelog); + my $clogpfn = ".git/dgit/changelog.822.tmp"; + runcmd shell_cmd "exec >$clogpfn", qw(dpkg-parsechangelog); + + responder_send_file('parsed-changelog', $clogpfn); my ($clogp, $cversion, $tag, $dscfn) = - push_parse_changelog(".git/dgit/changelog.822.tmp"); + push_parse_changelog("$clogpfn"); stat "../$dscfn" or fail "looked for .dsc $dscfn, but $!;". " maybe you forgot to build"; + responder_send_file('dsc', "../$dscfn"); + push_parse_dsc("../$dscfn", $dscfn, $cversion); my $format = getfield $dsc, 'Format'; @@ -1043,11 +1066,16 @@ sub dopush () { } } + responder_send_file('changes',$changesfn); + + my $tfn = sub { ".git/dgit/tag$_[0]"; }; my ($tagobjfn) = - push_mktag($head,$clogp,$tag, - $dsc,"../$dscfn", - $changesfile,$changesfile, - sub { ".git/dgit/tag$_[0]"; }); + $we_are_responder + ? responder_receive_files('signed-tag', $tfn->('.signed.tmp')) + : push_mktag($head,$clogp,$tag, + $dsc,"../$dscfn", + $changesfile,$changesfile, + $tfn); my $tag_obj_hash = cmdoutput @git, qw(hash-object -w -t tag), $tagobjfn; runcmd_ordryrun @git, qw(verify-tag), $tag_obj_hash; @@ -1059,23 +1087,35 @@ sub dopush () { } runcmd_ordryrun @git, qw(push),access_giturl(),"HEAD:".rrref(); runcmd_ordryrun @git, qw(update-ref -m), 'dgit push', lrref(), 'HEAD'; - if (!$dryrun) { - rename "../$dscfn.tmp","../$dscfn" or die "$dscfn $!"; - } else { - progress "[new .dsc left in $dscfn.tmp]"; + + if (!$we_are_responder) { + if (!$dryrun) { + rename "../$dscfn.tmp","../$dscfn" or die "$dscfn $!"; + } else { + progress "[new .dsc left in $dscfn.tmp]"; + } } if ($sign) { - my @debsign_cmd = @debsign; - push @debsign_cmd, "-k$keyid" if defined $keyid; - push @debsign_cmd, $changesfile; - runcmd_ordryrun @debsign_cmd; + if ($we_are_responder) { + my $dryrunsuffix = $dryrun ? ".tmp" : ""; + responder_receive_files('signed-changes-dsc', + "$changesfile$dryrunsuffix", + "../$dscfn$dryrunsuffix"); + } else { + my @debsign_cmd = @debsign; + push @debsign_cmd, "-k$keyid" if defined $keyid; + push @debsign_cmd, $changesfile; + runcmd_ordryrun @debsign_cmd; + } } runcmd_ordryrun @git, qw(push),access_giturl(),"refs/tags/$tag"; my $host = access_cfg('upload-host','RETURN-UNDEF'); my @hostarg = defined($host) ? ($host,) : (); runcmd_ordryrun @dput, @hostarg, $changesfile; printdone "pushed and uploaded $cversion"; + + responder_send_command("complete"); } sub cmd_clone {