X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=dgit;h=87419c266574709d8fc02b420ded39ae2aba6f3e;hb=4ab980fde0d1f51ebf67f0353605e30e923b0975;hp=88df4ef5eedeaf0bca604e477067dc2b53d18b49;hpb=893e94307ff001da9fc13b28c94ed27d17f48b60;p=dgit.git diff --git a/dgit b/dgit index 88df4ef5..87419c26 100755 --- a/dgit +++ b/dgit @@ -5281,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->error and fail "read $dscfn: $!"; @@ -5305,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"; @@ -5337,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";