chiark / gitweb /
dsc import: Call resolve_dsc_field_commit
[dgit.git] / dgit
diff --git a/dgit b/dgit
index ca343afc87f911fb832a1b0f0b79182f075dd6f4..3ffcf77a7198501037d8566ee8a96722b2ef2b58 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -2769,7 +2769,8 @@ sub resolve_dsc_field_commit ($$) {
     return unless defined $dsc_hash;
 
     my $mapref =
-       $already_distro eq $dsc_distro || !$chase_dsc_distro 
+       defined $already_mapref &&
+       ($already_distro eq $dsc_distro || !$chase_dsc_distro)
        ? $already_mapref : undef;
 
     my $do_fetch;
@@ -6022,11 +6023,16 @@ sub cmd_import_dsc {
 
     parse_dscdata();
 
-    parse_dsc_field($dsc, "Dgit metadata in .dsc");
+    $package = getfield $dsc, 'Source';
+
+    parse_dsc_field($dsc, "Dgit metadata in .dsc")
+       unless forceing [qw(import-dsc-with-dgit-field)];
 
-    if (defined $dsc_hash
-       && !forceing [qw(import-dsc-with-dgit-field)]) {
+    if (defined $dsc_hash) {
        progress "dgit: import-dsc of .dsc with Dgit field, using git hash";
+       resolve_dsc_field_commit undef, undef;
+    }
+    if (defined $dsc_hash) {
        my @cmd = (qw(sh -ec),
                   "echo $dsc_hash | git cat-file --batch-check");
        my $objgot = cmdoutput @cmd;
@@ -6058,7 +6064,6 @@ Specify  +$specbranch to overwrite, discarding existing history
 END
        if $oldhash && !$force;
 
-    $package = getfield $dsc, 'Source';
     my @dfi = dsc_files_info();
     foreach my $fi (@dfi) {
        my $f = $fi->{Filename};