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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).