X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=dgit.git;a=blobdiff_plain;f=dgit;h=5fc937898d77ca14c1c031eecd933adbd81606b4;hp=1fd15d73ae63bedd54959abf82401310a3b1f8a6;hb=17652b53bde8d7aa85a7cdd8fc6d7abcc94b2946;hpb=7474327d959d0478a501d9a222876d00384bd7d2 diff --git a/dgit b/dgit index 1fd15d73..5fc93789 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)"); @@ -110,8 +111,10 @@ sub cmdoutput_errok { $!=0; $?=0; { local $/ = undef; $d =
; }
die if P->error;
- close P or return undef;
+ if (!close P) { print DEBUG "=>!$?\n" if $debug>0; return undef; }
chomp $d;
+ $d =~ m/^.*/;
+ print DEBUG "=> \`$&'",(length $' ? '...' : ''),"\n" if $debug>0; #';
return $d;
}
@@ -152,7 +155,6 @@ sub cfg {
$v = cmdoutput_errok(@git, qw(config --), $c);
};
if ($?==0) {
- chomp $v;
return $v;
} elsif ($?!=256) {
die "$c $?";
@@ -208,7 +210,7 @@ sub parsechangelog {
return $c;
}
-our $rmad;
+our %rmad;
sub archive_query () {
my $query = access_cfg('archive-query');
@@ -217,13 +219,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 +249,7 @@ sub archive_query () {
}
sub canonicalise_suite () {
- archive_query();
+ archive_query() or die;
}
sub get_archive_dsc () {
@@ -316,7 +320,7 @@ sub mktree_in_ud_from_only_subdir () {
symlink '../../../../objects','.git/objects' or die $!;
runcmd @git, qw(add -Af);
my $tree = cmdoutput @git, qw(write-tree);
- chomp $tree; $tree =~ m/^\w+$/ or die "$tree ?";
+ $tree =~ m/^\w+$/ or die "$tree ?";
return ($tree,$dir);
}
@@ -366,7 +370,7 @@ committer $authline
$clogp->{Changes}
-# imported by dgit from the archive
+# imported from the archive
END
close C or die $!;
my $commithash = cmdoutput @git, qw(hash-object -w -t commit ../commit.tmp);
@@ -428,7 +432,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);
}
@@ -450,15 +454,17 @@ sub fetch_from_archive () {
print "last upload to archive has NO git hash\n";
}
- $!=0; $upload_hash =
- cmdoutput_errok @git, qw(show-ref --heads), lrref();
- if ($?==0) {
- die unless chomp $upload_hash;
- } elsif ($?==256) {
+ my $lrref_fn = ".git/".lrref();
+ if (open H, $lrref_fn) {
+ $upload_hash =