Re: [BUG REPORT] git-svn fails to create branches if ssh+svn gets used as protocol.
- From
- Florian Köberle <florian@fkoeberle.de>
- Date
- Dec 23, 2009, 19:26 UTC
- Message-ID
- <4B326EE3.5060409@fkoeberle.de>
- In-Reply-To
- <20091223072500.GB4323@dcvr.yhbt.net>
Hello Eric,
your patch works great. I created successfully a branch on a svn+ssh:// repository using the patched git-svn.
Thank you for the patch and the fast reply. I hope the patch find it's way into the next release.
Best regards, Florian
Eric Wong wrote:
Show 61 quoted lines
> Florian Köberle <florian@fkoeberle.de> wrote:
>
>> Hello
>>
>> I haven't seen a link to a bug tracker so I am sending this bug report
>> to the mailing list, I hope it's okay.
>>
>
> Hi Florian,
>
> The mailing list is the bug tracker here :)
>
>
>> If you try to run
>> $ git svn branch foo
>> in a project using a svn+ssh url, you get the following error log:
>>
>> Copying svn+ssh://example.org/svn/project/trunk at r1000 to
>> svn+ssh://me@example.org/svn/project/branches/foo...
>> Trying to use an unsupported feature: Source and dest appear not to be
>> in the same repository (src: 'svn+ssh://example.org/svn/project/trunk';
>> dst: 'svn+ssh://me@example.org/svn/project/branches/foo') at
>> /home/florian/libexec/git-core/git-svn line 722
>>
>> It fails as the username is missing in the source url. If you modify the
>> git-svn script and add the username it works. The bug can be reproduced
>> with git-svn version 1.6.5.7 (svn 1.5.1).
>>
>
> Thanks for the info, the following patch should help.
>
> I rarely get around to testing against svn+ssh servers myself
> (and they don't appear too common compared to http/https).
>
> Let us know how it goes, thanks!
>
> From b2bc7e330209659c20d02ee0ba3785f9f59fd0b2 Mon Sep 17 00:00:00 2001
> From: Eric Wong <normalperson@yhbt.net>
> Date: Tue, 22 Dec 2009 22:40:18 -0800
> Subject: [PATCH] git svn: branch/tag commands detect username in URLs
>
> Signed-off-by: Eric Wong <normalperson@yhbt.net>
> ---
> git-svn.perl | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/git-svn.perl b/git-svn.perl
> index dba0d12..650c9e5 100755
> --- a/git-svn.perl
> +++ b/git-svn.perl
> @@ -663,7 +663,8 @@ sub cmd_branch {
> }
> $head ||= 'HEAD';
>
> - my ($src, $rev, undef, $gs) = working_head_info($head);
> + my (undef, $rev, undef, $gs) = working_head_info($head);
> + my $src = $gs->full_url;
>
> my $remote = Git::SVN::read_all_remotes()->{$gs->{repo_id}};
> my $allglobs = $remote->{ $_tag ? 'tags' : 'branches' };
>