X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit;h=78b05f9edcd3a7bd2d2e13f91aca7a3a2dd72ce8;hb=d7aeeed4ce3bc05d015a84174dbfb237000d338a;hp=6692f55cffbd149f03605e44d01f23bd998f3145;hpb=326f8ea7f8a42e4cc3f422fea277822f82784c90;p=dgit.git diff --git a/dgit b/dgit index 6692f55c..78b05f9e 100755 --- a/dgit +++ b/dgit @@ -33,6 +33,7 @@ our $sign = 1; our $dryrun = 0; our $changesfile; our $new_package = 0; +our $existing_package = 'dpkg'; our %format_ok = map { $_=>1 } ("1.0","3.0 (native)","3.0 (quilt)"); @@ -208,7 +209,7 @@ sub parsechangelog { return $c; } -our $rmad; +our %rmad; sub archive_query () { my $query = access_cfg('archive-query'); @@ -217,13 +218,15 @@ sub archive_query () { my $proto = $1; my $url = $'; #'; die unless $proto eq 'madison'; - $rmad ||= cmdoutput qw(rmadison -asource),"-s$suite","-u$url",$package; + $rmad{$package} ||= cmdoutput + qw(rmadison -asource),"-s$suite","-u$url",$package; + my $rmad = $rmad{$package}; if (!length $rmad) { return (); } $rmad =~ m{^ \s*( [^ \t|]+ )\s* \| \s*( [^ \t|]+ )\s* \| - \s*( [^ \t|/]+ )(?:/([^ \t|/]+)) \s* \| + \s*( [^ \t|/]+ )(?:/([^ \t|/]+))? \s* \| \s*( [^ \t|]+ )\s* }x or die "$rmad $?"; $1 eq $package or die "$rmad $package ?"; my $vsn = $2; @@ -245,7 +248,7 @@ sub archive_query () { } sub canonicalise_suite () { - archive_query(); + archive_query() or die; } sub get_archive_dsc () { @@ -428,7 +431,7 @@ sub rev_parse ($) { sub is_fast_fwd ($$) { my ($ancestor,$child) = @_; - my $mb = cmdoutput @git, qw(merge-base), $dsc_hash, $upload_hash; + my $mb = cmdoutput @git, qw(merge-base), $ancestor, $child; return rev_parse($mb) eq rev_parse($ancestor); } @@ -645,7 +648,7 @@ sub cmd_push { if (@ARGV==0) { $suite = $clogp->{Distribution}; if ($new_package) { - local ($package) = 'dpkg'; + local ($package) = $existing_package; # this is a hack canonicalise_suite(); } } else { @@ -665,7 +668,6 @@ sub cmd_build { my $clogp = parsechangelog(); $suite = $clogp->{Distribution}; $package = $clogp->{Source}; - canonicalise_suite(); runcmd_ordryrun qw(git-buildpackage -us -uc --git-no-sign-tags), '--git-builder=dpkg-buildpackage -i\.git/ -I.git', @@ -690,6 +692,8 @@ sub parseopts () { $om->[0] = $2; } elsif (m/^--(\w+):(.*)/s && ($om = $opts_opt_map{$1})) { push @$om, $2; + } elsif (m/^--existing-package=(.*)/s) { + $existing_package = $1; } else { die "$_ ?"; }