chiark / gitweb /
import-dsc: Introduce $info (nfc)
[dgit.git] / dgit
diff --git a/dgit b/dgit
index 48143341e9f47177228a6f58a96b9af416542dec..87419c266574709d8fc02b420ded39ae2aba6f3e 100755 (executable)
--- a/dgit
+++ b/dgit
@@ -78,7 +78,8 @@ our %forceopts = map { $_=>0 }
     qw(unrepresentable unsupported-source-format
        dsc-changes-mismatch changes-origs-exactly
        import-gitapply-absurd
-       import-gitapply-no-absurd);
+       import-gitapply-no-absurd
+       import-dsc-with-dgit-field);
 
 our %format_ok = map { $_=>1 } ("1.0","3.0 (native)","3.0 (quilt)");
 
@@ -5280,9 +5281,19 @@ sub cmd_import_dsc {
 
     badusage "dry run makes no sense with import-dsc" unless act_local();
 
+    my $info = "$dscfn";
+
+    my $specbranch = $dstbranch;
     $dstbranch = "refs/heads/$dstbranch" unless $dstbranch =~ m#^refs/#;
     $dstbranch = cmdoutput @git, qw(check-ref-format --normalize), $dstbranch;
 
+    my @symcmd = (@git, qw(symbolic-ref -q HEAD));
+    my $chead = cmdoutput_errok @symcmd;
+    defined $chead or $?==256 or failedcmd @symcmd;
+
+    fail "$dstbranch is checked out - will not update it"
+       if defined $chead and $chead eq $dstbranch;
+
     open D, "<", $dscfn or fail "open import .dsc ($dscfn): $!";
     $dscdata = do { local $/ = undef; <D>; };
     D->error and fail "read $dscfn: $!";
@@ -5304,7 +5315,7 @@ Your git tree does not have that object.  Try `git fetch' from a
 plausible server (browse.dgit.d.o? alioth?), and try the import-dsc again.
 END
        }
-       @cmd = (@git, qw(update-ref -m), "dgit import-dsc (Dgit): $dscfn",
+       @cmd = (@git, qw(update-ref -m), "dgit import-dsc (Dgit): $info",
                $dstbranch, $dgit_commit);
        runcmd @cmd;
        progress "dgit: import-dsc updated git ref $dstbranch";
@@ -5336,7 +5347,7 @@ END
     my @mergeinputs = generate_commits_from_dsc();
     die unless @mergeinputs == 1;
 
-    my @cmd = (@git, qw(update-ref -m), "dgit import-dsc: $dscfn",
+    my @cmd = (@git, qw(update-ref -m), "dgit import-dsc: $info",
               $dstbranch, $mergeinputs[0]{Commit});
     runcmd @cmd;
     progress "dgit: import-dsc results are in in git ref $dstbranch";