From: Eric Wong <normalperson@yhbt•net>
To: Junio C Hamano <gitster@pobox•com>
Cc: git@vger•kernel.org, Mattias Nissler <mattias.nissler@gmx•de>
Subject: [PATCH] git svn: make minimize URL more reliable over http(s)
Date: Sat, 25 Jul 2009 13:57:05 -0700 [thread overview]
Message-ID: <20090725205705.GA18321@dcvr.yhbt.net> (raw)
In-Reply-To: <1248553018.4593.15.camel@kea>
In addition to path-based restrictions, Subversion servers over
http(s) may have access controls implemented via the LimitExcept
directive in Apache. In some cases, LimitExcept may be
(arguably) misconfigured to not allow REPORT requests while
allowing OPTIONS and PROPFIND.
This caused problems with our existing minimize_url logic that
only issued OPTIONS and PROPFIND requests when connecting and
using SVN::Ra::get_latest_revnum. We now call SVN::Ra::get_log
if get_latest_revnum succeeds, resulting in a REPORT request
being sent. This will increase our chances of tripping access
controls before we start attempting to fetch history.
Signed-off-by: Eric Wong <normalperson@yhbt•net>
---
Also pushed out to git://git.bogomips.org/git-svn
Mattias Nissler <mattias.nissler@gmx•de> wrote:
> On Sat, 2009-07-25 at 12:22 -0700, Eric Wong wrote:
> > Mattias Nissler <mattias.nissler@gmx•de> wrote:
> > > Maybe we should rather try to detect whether we have read access to the
> > > repository root and adjust behaviour accordingly? Or at least print a
> > > warning when cloning restricted multi-branch repos, since this just
> > > fails silently (doesn't pick up any branches) when you have minimize_url
> > > enabled.
> >
> > We actually try that in Git::SVN::Ra::minimize_url:
<snip>
> > Maybe get_latest_revnum() isn't strong enough of a check for
> > certain setups and get_log() needs to be used instead?
>
> Well, I simply wasn't aware of this. I've just retried and it turns out
> latest git.git works perfectly for me in both restricted and
> non-restricted setups. Great work!
git-svn.perl | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/git-svn.perl b/git-svn.perl
index fd7232c..d075810 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -4831,7 +4831,11 @@ sub minimize_url {
my $c = '';
do {
$url .= "/$c" if length $c;
- eval { (ref $self)->new($url)->get_latest_revnum };
+ eval {
+ my $ra = (ref $self)->new($url);
+ my $latest = $ra->get_latest_revnum;
+ $ra->get_log("", $latest, 0, 1, 0, 1, sub {});
+ };
} while ($@ && ($c = shift @components));
$url;
}
--
Eric Wong
prev parent reply other threads:[~2009-07-25 20:57 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-23 6:40 [ANNOUNCE] GIT 1.6.4-rc2 Junio C Hamano
2009-07-23 16:32 ` Tony Finch
2009-07-24 9:38 ` Eric Wong
2009-07-24 17:49 ` Junio C Hamano
2009-07-25 10:38 ` Eric Wong
2009-07-25 11:10 ` [PATCH 2/2] git svn: the branch command no longer needs the full path Eric Wong
2009-07-26 8:13 ` Junio C Hamano
2009-07-26 10:01 ` [PATCH] t9143: do not fail if Compress::Zlib is missing Eric Wong
2009-07-25 13:39 ` [ANNOUNCE] GIT 1.6.4-rc2 Mattias Nissler
2009-07-25 19:22 ` Eric Wong
2009-07-25 20:16 ` Mattias Nissler
2009-07-25 20:57 ` Eric Wong [this message]
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=20090725205705.GA18321@dcvr.yhbt.net \
--to=normalperson@yhbt$(echo .)net \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=mattias.nissler@gmx$(echo .)de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
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