git svn: make minimize URL more reliable over http(s)
authorEric Wong <normalperson@yhbt.net>
Sat, 25 Jul 2009 20:14:16 +0000 (13:14 -0700)
committerEric Wong <normalperson@yhbt.net>
Sat, 25 Jul 2009 20:37:02 +0000 (13:37 -0700)
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>
git-svn.perl

index fd7232cf6d6fcff0042a8251bbe604d02245a9a5..d0758107249f3743795d0961d36906452ac7d00a 100755 (executable)
@@ -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;
 }