From: Slava Kardakov Date: Wed, 5 Jun 2013 18:31:27 +0000 (-0700) Subject: Fix `git svn` `rebase` & `dcommit` if top-level HEAD directory exist X-Git-Tag: v1.8.4-rc0~173 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9926f66fbd4392c9c7c05fae83e80bc12e0be889;p=thirdparty%2Fgit.git Fix `git svn` `rebase` & `dcommit` if top-level HEAD directory exist When a file (or a directory) called HEAD exists in the working tree, internal calls git svn makes trigger "did you mean a revision or a path?" ambiguity check. $ git svn rebase fatal: ambiguous argument 'HEAD': both revision and filename Use '--' to separate paths from revisions, like this: 'git [...] -- [...]' rev-list --first-parent --pretty=medium HEAD: command returned error: 128 Explicitly disambiguate by adding "--" after the revision. Signed-off-by: Slava Kardakov Reviewed-by: Jeff King Acked-by: Eric Wong Signed-off-by: Junio C Hamano --- diff --git a/git-svn.perl b/git-svn.perl index d070de012c..36083c1072 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -831,7 +831,7 @@ sub dcommit_rebase { sub cmd_dcommit { my $head = shift; command_noisy(qw/update-index --refresh/); - git_cmd_try { command_oneline(qw/diff-index --quiet HEAD/) } + git_cmd_try { command_oneline(qw/diff-index --quiet HEAD --/) } 'Cannot dcommit with a dirty index. Commit your changes first, ' . "or stash them with `git stash'.\n"; $head ||= 'HEAD'; @@ -1932,7 +1932,7 @@ sub cmt_sha2rev_batch { sub working_head_info { my ($head, $refs) = @_; my @args = qw/rev-list --first-parent --pretty=medium/; - my ($fh, $ctx) = command_output_pipe(@args, $head); + my ($fh, $ctx) = command_output_pipe(@args, $head, "--"); my $hash; my %max; while (<$fh>) {