X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit;h=4b088dbc316f0e8f2a3fa0d3a922895eadfd3457;hb=6516b26b1e24241f879b9bde6533d1c8a384c803;hp=19745818079d2939ca95e68688c9006ccbe0d8f3;hpb=791b5fe6f1ae18b11277f8bb5bc83d8029c57503;p=dgit.git diff --git a/dgit b/dgit index 19745818..4b088dbc 100755 --- a/dgit +++ b/dgit @@ -2556,7 +2556,7 @@ sub lrfetchref () { return lrfetchrefs.'/'.server_branch($csuite); } # (If we deleted them unconditionally, then we might end up # re-fetching the same git objects each time dgit fetch was run.) # -# So, leach use of lrfetchrefs needs to be accompanied by arrangements +# So, each use of lrfetchrefs needs to be accompanied by arrangements # in git_fetch_us to fetch the refs in question, and possibly a call # to lrfetchref_used. @@ -2763,8 +2763,8 @@ sub git_fetch_us () { } elsif ($here{$lref} eq $objid) { lrfetchref_used $fullrefname; } else { - print STDERR \ - "Not updateting $lref from $here{$lref} to $objid.\n"; + print STDERR + "Not updating $lref from $here{$lref} to $objid.\n"; } }); } @@ -2799,6 +2799,11 @@ sub fetch_from_archive_record_2 ($) { } } +sub parse_dsc_field_def_dsc_distro () { + $dsc_distro //= cfg qw(dgit.default.old-dsc-distro + dgit.default.distro); +} + sub parse_dsc_field ($$) { my ($dsc, $what) = @_; my $f; @@ -2806,16 +2811,17 @@ sub parse_dsc_field ($$) { $f = $dsc->{$field}; last if defined $f; } + if (!defined $f) { progress "$what: NO git hash"; + parse_dsc_field_def_dsc_distro(); } elsif (($dsc_hash, $dsc_distro, $dsc_hint_tag, $dsc_hint_url) = $f =~ m/^(\w+)\s+($distro_re)\s+($versiontag_re)\s+(\S+)(?:\s|$)/) { progress "$what: specified git info ($dsc_distro)"; $dsc_hint_tag = [ $dsc_hint_tag ]; } elsif ($f =~ m/^\w+\s*$/) { $dsc_hash = $&; - $dsc_distro //= cfg qw(dgit.default.old-dsc-distro - dgit.default.distro); + parse_dsc_field_def_dsc_distro(); $dsc_hint_tag = [ debiantags +(getfield $dsc, 'Version'), $dsc_distro ]; progress "$what: specified git hash"; @@ -2911,7 +2917,7 @@ but we could not obtain that object anywhere. END foreach my $t (@tags) { my $fullrefname = $lrf.'/'.$t; - print STDERR "CHK $t $fullrefname ".Dumper(\%lrfetchrefs_f); +# print STDERR "CHK $t $fullrefname ".Dumper(\%lrfetchrefs_f); next unless $lrfetchrefs_f{$fullrefname}; next unless is_fast_fwd "$fullrefname~0", $dsc_hash; lrfetchref_used $fullrefname; @@ -6111,6 +6117,12 @@ sub cmd_import_dsc { parse_dsc_field($dsc, "Dgit metadata in .dsc") unless forceing [qw(import-dsc-with-dgit-field)]; + parse_dsc_field_def_dsc_distro(); + + $isuite = 'DGIT-IMPORT-DSC'; + $idistro //= $dsc_distro; + + notpushing(); if (defined $dsc_hash) { progress "dgit: import-dsc of .dsc with Dgit field, using git hash"; @@ -6148,8 +6160,6 @@ Specify +$specbranch to overwrite, discarding existing history END if $oldhash && !$force; - notpushing(); - my @dfi = dsc_files_info(); foreach my $fi (@dfi) { my $f = $fi->{Filename};