From: Eric Wong <normalperson@yhbt.net>
To: Boaz Stuller <boazstuller@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: Problem with git-svn
Date: Wed, 20 Aug 2008 01:11:05 -0700 [thread overview]
Message-ID: <20080820080528.GA16665@untitled> (raw)
In-Reply-To: <5979e28c0808190641l343ed48fi75c55f9f0cdb1bcf@mail.gmail.com>
Boaz Stuller <boazstuller@gmail.com> wrote:
> I'm having a problem with git-svn. I was connecting to a remote svn
> repository via the svn+ssh:// protocol using an embedded username in
> the url, i.e svn+ssh://boazstuller@svn.example.com/some/complicated/path.
> When I upgraded to 1.6.0, 'git svn dcommit' stopped working and
> instead kept asking me for a password. I tracked the problem down to
> the following commit:
>
> commit ba24e7457aa1f958370bbb67dfb97e3ec806fd4a
> Author: Eric Wong <normalperson@yhbt.net>
> Date: Thu Aug 7 02:06:16 2008 -0700
> git-svn: add ability to specify --commit-url for dcommit
>
> I don't know perl, but the problem seems to be where around line 446,
> '$gs->full_url' gets changed to '$url'. Apparently, $gs->full_url
> contained the embedded username but $url has it stripped out, i.e
> svn+ssh://svn.example.com/some/complicated/path , so ssh can't tell
> what username I'm trying to log in as.
Hi Boaz, thanks for tracking this down. The following patch should
fix your issue (and another potential one I noticed).
I've lightly tested it and it appears to work for me.
>From de9e79c4a7bdec5481dc0d19ae21ced3a403c0c9 Mon Sep 17 00:00:00 2001
From: Eric Wong <normalperson@yhbt.net>
Date: Wed, 20 Aug 2008 00:30:06 -0700
Subject: [PATCH] git-svn: fix dcommit to urls with embedded usernames
Don't rely on the extracted URL from working_head_info since
that has the username removed. Instead use the $gs->full_url
method (as before with ba24e7457aa1f958370bbb67dfb97e3ec806fd4a)
to give us the URL to commit to if --commit-url is not
specified.
Aditionally, since we clean usernames from URLs, checking the
URL after rebase can fail because it doesn't match the URL we
used to commit; so unconditionally provide a username-free
URL for checking the result of the refetch.
Signed-off-by: Eric Wong <normalperson@yhbt.net>
---
git-svn.perl | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl
index 099fd02..7a1d26d 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -421,7 +421,7 @@ sub cmd_dcommit {
$head ||= 'HEAD';
my @refs;
my ($url, $rev, $uuid, $gs) = working_head_info($head, \@refs);
- $url = $_commit_url if defined $_commit_url;
+ $url = defined $_commit_url ? $_commit_url : $gs->full_url;
my $last_rev = $_revision if defined $_revision;
if ($url) {
print "Committing to $url ...\n";
@@ -437,6 +437,8 @@ sub cmd_dcommit {
"If these changes depend on each other, re-running ",
"without --no-rebase may be required."
}
+ my $expect_url = $url;
+ Git::SVN::remove_username($expect_url);
while (1) {
my $d = shift @$linear_refs or last;
unless (defined $last_rev) {
@@ -511,9 +513,9 @@ sub cmd_dcommit {
$gs->refname,
"\nBefore dcommitting";
}
- if ($url_ ne $url) {
+ if ($url_ ne $expect_url) {
fatal "URL mismatch after rebase: ",
- "$url_ != $url";
+ "$url_ != $expect_url";
}
if ($uuid_ ne $uuid) {
fatal "uuid mismatch after rebase: ",
--
Eric Wong
next prev parent reply other threads:[~2008-08-20 8:12 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-19 13:41 Problem with git-svn Boaz Stuller
2008-08-20 8:11 ` Eric Wong [this message]
2008-08-20 17:45 ` Boaz Stuller
2008-08-21 6:34 ` Eric Wong
-- strict thread matches above, loose matches on Subject: below --
2007-12-16 10:30 Pascal Obry
2007-12-16 13:56 ` Peter Baumann
2007-12-16 15:40 ` Pascal Obry
2007-12-19 8:27 ` Eric Wong
2007-12-19 11:27 ` Pascal Obry
2007-12-20 18:30 ` Eric Wong
2007-12-20 20:33 ` Pascal Obry
2007-12-21 15:42 ` Pascal Obry
2007-12-22 4:29 ` Eric Wong
2007-12-22 14:38 ` Pascal Obry
2007-12-20 20:34 ` Pascal Obry
2007-05-03 23:10 John Wiegley
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080820080528.GA16665@untitled \
--to=normalperson@yhbt.net \
--cc=boazstuller@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.