From: Eric Wong <normalperson@yhbt.net>
To: Martin Eisenhardt <martin.eisenhardt@mneisen.org>
Cc: Adam Roben <aroben@apple.com>, Git Mailing List <git@vger.kernel.org>
Subject: Re: Possible bug in git-svn
Date: Sat, 12 May 2007 14:40:35 -0700 [thread overview]
Message-ID: <20070512214035.GA18560@muzzle> (raw)
In-Reply-To: <200705121824.14190.list-receive@mneisen.org>
Martin Eisenhardt <list-receive@mneisen.org> wrote:
> Hello Eric,
> hello list,
>
> I came across what might just possibly be a bug in git-svn. My apologies if
> this was already handled somewhere on the list but I was not able to find
> this exact problem mentioned before.
>
> Let's say I run a SVN repository at svn+ssh://svn@example.com/repos and have
> it set up as described at
>
> http://svnbook.red-bean.com/nightly/en/svn.serverconfig.svnserve.html#svn.serverconfig.svnserve.sshtricks
>
> In essence, there is only one user "svn" with access to the repository, and
> every developer has his/her public key in ~svn/.ssh/authorized_keys with a
> line like
>
> command="svnserve -t --tunnel-user=harry -r /svn/" TYPE1 KEY1
> harry@example.com
>
> This is desirable to limit the developers access to the repository; no shell,
> access restricted to svn's home directory.
>
> Now let's assume that within this repository, there are several projects, so
> we have f.e. the following structure:
>
> +-proj1-+-trunk
> | +-branches
> | +-tags
> |
> +-proj2-+-trunk
> | +-branches
> | +-tags
> +-[more projects]
>
> I have no problem setting up a local .git tracking such a project using
>
> $ git-svn init svn+ssh://svn@example.com/repos/proj1/trunk
> $ git-svn fetch
>
> After having made local changes and commited them to git, I want to push them
> to the remote subversion repository:
>
> $ # do some work
> $ git-commit -a
> $ git-svn dcommit
>
> The last command gives me (invariably):
>
> Couldn't find a repository: No repository found
> in 'svn+ssh://example.com/repos/proj1/trunk' at at /home/mneisen/bin/git-svn
> line 403
>
> What is odd is that git-svn uses the URL-prefix svn+ssh://example.com/[...]
> instead of the correct svn+ssh://svn@example.com/[...], i.e., git-svn drops
> the user name.
>
> This behavior is surprisingly inconsistent as git-svn uses the correct user
> name while fetching and stores it correctly in .git/config.
Ouch. This is laziness on my part exposed by a patch Adam made to
cleanup the git-svn-id lines. dcommit reads the git-svn-id: line in the
last SVN commit instead of .git/config.
> The server log contains the following lines:
>
> May 12 18:18:50 [sshd] Accepted keyboard-interactive/pam for mneisen from
> 217.229.32.249 port 37685 ssh2
> May 12 18:18:50 [sshd(pam_unix)] session opened for user mneisen by (uid=0)
> May 12 18:18:51 [sshd(pam_unix)] session closed for user mneisen
>
> which supports my suspicion that git-svn drops the user name for dcommit and
> uses the current account name instead.
>
> A git repository on the same machine as the subversion repository is able to
> track the SVN repository, so it seems that my problems are directly related
> to the combination of git-svn and the svn+ssh transport of subversion.
>
> If this an error on my part, please advise me how to solve it.
Thanks for the bug report. I haven't tested the patch below, so
let me know if it works:
>From 58af622c222514dc3da938ce6309e1ac927a9574 Mon Sep 17 00:00:00 2001
From: Eric Wong <normalperson@yhbt.net>
Date: Sat, 12 May 2007 14:36:20 -0700
Subject: [PATCH] git-svn: don't drop the username from URLs when dcommit is run
We no longer store usernames in URLs stored in git-svn-id lines
for dcommit, so we shouldn't rely on those URLs when connecting
to the remote repository to commit.
---
git-svn.perl | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl
index 3c4f490..d74e6d3 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -393,7 +393,7 @@ sub cmd_dcommit {
} else {
my %ed_opts = ( r => $last_rev,
log => get_commit_entry($d)->{log},
- ra => Git::SVN::Ra->new($url),
+ ra => Git::SVN::Ra->new($gs->full_url),
tree_a => "$d~1",
tree_b => $d,
editor_cb => sub {
--
Eric Wong
next prev parent reply other threads:[~2007-05-12 21:40 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-05-12 16:24 Possible bug in git-svn Martin Eisenhardt
2007-05-12 21:40 ` Eric Wong [this message]
2007-05-13 7:53 ` [PATCH] git-svn: don't drop the username from URLs when dcommit is run Eric Wong
2007-05-13 13:22 ` Possible bug in git-svn Martin Eisenhardt
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=20070512214035.GA18560@muzzle \
--to=normalperson@yhbt.net \
--cc=aroben@apple.com \
--cc=git@vger.kernel.org \
--cc=martin.eisenhardt@mneisen.org \
/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).