Fix `git svn rebase` if top-level HEAD directory exist
PATCH 1/1 Fix `git svn rebase` if top-level HEAD directory exist
Oh hai!
I have a svn repo with the top-level directory named HEAD and git svn rebase [HEAD] [--] fails with
Quoted 5 lines
$ 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
Works fine with patch in the attached file. please review.
//wbr ojab
From 522cbc8b8a7c4f2ab4268551a550585753164677 Mon Sep 17 00:00:00 2001
From: ojab <[email protected]>
Date: Tue, 4 Jun 2013 11:28:16 +0400
Subject: [PATCH] Fix git svn rebase if top-level HEAD directory exist
--- git-svn.perl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
git-svn.perl +1 -1
@@ -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>) {
Signature · 1 line
1.8.2
Quoted 1 line · ojab
Oh hai!
You can haz patch?
Quoted 7 lines
I have a svn repo with the top-level directory named HEAD and
git svn rebase [HEAD] [--]fails withQuoted 5 lines
$ 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
This rationale should probably go in the commit message.
Quoted 4 lines
From
522cbc8b8a7c4f2ab4268551a550585753164677Mon Sep 17 00:00:00 2001
From: ojab <[email protected]>
Date: Tue, 4 Jun 2013 11:28:16 +0400
Subject: [PATCH] Fixgit svn rebaseif top-level HEAD directory exist
We prefer patches to be inline in the email; these lines can be dropped, as they are picked up from your email headers.
Quoted 1 line
Signed-off-by ojab <[email protected]>
Do you mind providing a real name? The point of Signed-off-by is for licensing and attribution.
git-svn.perl sub cmt_sha2rev_batch { · line 1935
Quoted 10 lines
git-svn.perl +1
-1@@ -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, "--");
Looks obviously correct to me. I did a quick grep, and there is one other spot that probably should get the same treatment:
git-svn.perl +1 -1
@@ -831,7 +831,7 @@ sub cmd_dcommit { 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';
Feel free to squash it in if you re-roll your patch. There are a few other spots that feed full sha1s. They are probably less likely to trigger, but perhaps should be protected, too, just in case.
-Peff
Quoted 1 line · Jeff King
This rationale should probably go in the commit message.
Done
Quoted 3 lines
We prefer patches to be inline in the email; these lines can be dropped, as they are picked up from your email headers.
AFAIK Thunderbird brakes spaces, so better safe, than sorry :)
Quoted 2 lines
Do you mind providing a real name? The point of Signed-off-by is for licensing and attribution.
Done (but i doubt that such a patch can be copyrighted).
Quoted 2 lines
Looks obviously correct to me. I did a quick grep, and there is one other spot that probably should get the same treatment:
Yep, already found it.
//wbr ojab
From 0251b7f2032e2050d2b6d2cbc0960471c996b058 Mon Sep 17 00:00:00 2001
From: ojab <[email protected]>
Date: Tue, 4 Jun 2013 11:28:16 +0400
Subject: [PATCH] Fix git svn rebase & dcommit if top-level HEAD
directory exist
$ 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
--- git-svn.perl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
git-svn.perl +2 -2
@@ -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>) {
Signature · 1 line
1.8.2