Subject: Fix git-svn tests for SVN 1.7.5.

From: Michael G Schwern <[email-masked]>
Date: Mon, 16 Jul 2012 17:53:06 -0700

Hi,

I've fixed the git-svn tests for SVN 1.7 and tested with SVN 1.7.5.  SVN 1.7
changed its expectations of path and URL formats and git-svn did not comply
with them.  The new code uses SVN's own canonicalization routines where
available.  This has been reported in several places...
https://bugs.gentoo.org/show_bug.cgi?id=418431
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=678764
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=661094
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=678137
https://trac.macports.org/ticket/32753

It also split the internal classes out of git-svn.perl and into their own
modules in perl/Git/ to make them easier to work on.  They compile alone, but
remain heavily intertwined with each other and git-svn.  I didn't want to go
very far down that rabbit hole.

This makes the tests pass, but I'm pretty sure plenty of canonicalization
problems remain untested.  Hopefully by attacking the problem at the root (ie.
in the Git::SVN and Git::SVN::Ra accessors) it will wipe out a range of problems.

t9100-git-svn-basic.sh tests 11-13 continue to fail for what look like
unrelated reasons to do with SVN and symlinks.

There's a lot of work in this change, so I felt it better to submit the
patches as a link to a git repository rather than attach a pile of patches.
Here is my repository, the work is in the fix-canonical branch.
https://github.com/schwern/git

Here's a summary of what was done.

* Changed git-svn's main canonicalization routines to use SVN's API.

* Replaced other ad-hoc canonicalization routines with git-svn's
  single routine.

* Moved all the Git:: classes inside git-svn into their own .pm files
  in perl/Git.  They compile, but don't do much more than that alone.
  They're still heavily dependent on git-svn.  It's a start.

* Added Git::SVN->url, Git::SVN->path and Git::SVN::Ra->url to replace
  code grabbing at hash keys.

* Made the above automatically canonicalize their path or url.

* Found some key locations which were not canonicalizing.

* Made the process of adding a new Perl module easier by having the
  Makefile.PL scan for .pm files.

-- 
Alligator sandwich, and make it snappy!