[PATCH] Fix `git svn rebase` if top-level HEAD directory exist

2013-06-04 Thread ojab

Oh hai!
I have a svn repo with the top-level directory named HEAD and `git svn 
rebase [HEAD] [--]` fails with

$ 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 o...@ojab.ru
Date: Tue, 4 Jun 2013 11:28:16 +0400
Subject: [PATCH] Fix `git svn rebase` if top-level HEAD directory exist
Signed-off-by: ojab o...@ojab.ru

---
 git-svn.perl | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/git-svn.perl b/git-svn.perl
index d070de0..e35a66a 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -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) {
-- 
1.8.2



Re: [PATCH] Fix `git svn rebase` if top-level HEAD directory exist

2013-06-04 Thread Jeff King
On Tue, Jun 04, 2013 at 11:32:56AM +0400, ojab wrote:

 Oh hai!

You can haz patch?

 I have a svn repo with the top-level directory named HEAD and `git
 svn rebase [HEAD] [--]` fails with
 $ 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.

 From 522cbc8b8a7c4f2ab4268551a550585753164677 Mon Sep 17 00:00:00 2001
 From: ojab o...@ojab.ru
 Date: Tue, 4 Jun 2013 11:28:16 +0400
 Subject: [PATCH] Fix `git svn rebase` if 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.

 Signed-off-by: ojab o...@ojab.ru

Do you mind providing a real name? The point of Signed-off-by is for
licensing and attribution.

 diff --git a/git-svn.perl b/git-svn.perl
 index d070de0..e35a66a 100755
 --- a/git-svn.perl
 +++ b/git-svn.perl
 @@ -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:

diff --git a/git-svn.perl b/git-svn.perl
index d070de0..07797ad 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -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
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Fix `git svn rebase` if top-level HEAD directory exist

2013-06-04 Thread ojab

On 04.06.2013 11:49, Jeff King wrote:


This rationale should probably go in the commit message.


Done



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 :)


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).


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 o...@ojab.ru
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

Signed-off-by: Slava Kardakov o...@ojab.ru

---
 git-svn.perl | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/git-svn.perl b/git-svn.perl
index d070de0..36083c1 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) {
-- 
1.8.2