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 <command> [<revision>...] -- [<file>...]'
    rev-list --first-parent --pretty=medium HEAD: command returned error: 128

Explicitly disambiguate by adding "--" after the revision.

Signed-off-by: Slava Kardakov <ojab@ojab.ru>
Reviewed-by: Jeff King <peff@peff.net>
Acked-by: Eric Wong <normalperson@yhbt.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Slava Kardakov 2013-06-05 11:31:27 -07:00 коммит произвёл Junio C Hamano
Родитель 4d1c565e1f
Коммит 9926f66fbd
1 изменённых файлов: 2 добавлений и 2 удалений

Просмотреть файл

@ -831,7 +831,7 @@ sub dcommit_rebase {
sub cmd_dcommit { sub cmd_dcommit {
my $head = shift; my $head = shift;
command_noisy(qw/update-index --refresh/); 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, ' 'Cannot dcommit with a dirty index. Commit your changes first, '
. "or stash them with `git stash'.\n"; . "or stash them with `git stash'.\n";
$head ||= 'HEAD'; $head ||= 'HEAD';
@ -1932,7 +1932,7 @@ sub cmt_sha2rev_batch {
sub working_head_info { sub working_head_info {
my ($head, $refs) = @_; my ($head, $refs) = @_;
my @args = qw/rev-list --first-parent --pretty=medium/; 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 $hash;
my %max; my %max;
while (<$fh>) { while (<$fh>) {