On 24.10.09 14:07, Daniel Shahaf wrote:
> Martin Hauner wrote on Sat, 24 Oct 2009 at 11:57 +0200:
>> Hi I'm trying to make subversion run on mingw32.
>> Running any python test fails because of a drive letter case mismatch. I found
> I'd be interested to know what mingw does differently that breaks
> our expectations (causing this assertion).
I did some investigation where the lower case path comes from and it turns out
it has nothing to do with mingw:
ActivePython 220.127.116.11 (ActiveState Software Inc.) based on
Python 2.5.1 (r251:54863, May 1 2007, 17:47:05) [MSC v.1310 32 bit (Intel)] on
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>> Assertion failed: svn_dirent_is_canonical(base, pool), file
>> line 879
>> The problem is the lower drive 'c' in "file:///c%3A/Development/ming/svn-trunk...".
>> svn_dirent_is_canonical does not except lower case drive letters.
Yes, of course, thank you :)
>> In svn_ra_local__split_URL there is Windows specific code that excepts lower
>> case drive letters. This doesn't fit with svn_dirent_is_canonical not excepting
>> lower case rive letters.
>> A fix would be to canonicalized the file:///c%3A url. Where would I add it?
>> Directly in svn_ra_local__split_URL or some levels up?
> I think you'll find the URL is already canonical (since as early as
> parsing argv), but URL canonicalization doesn't force the drive letter
> to uppercase. In other words, svn_ra_local__split_URL() got a canonical
> URL but passed down a non-canonical dirent (local path).
> So, IMO, change svn_ra_local__split_URL() to canonicalize (or assert
> canonicity of) the dirent it creates before passing it down.
Thanks for explanation, I'll try it the way you suggest. :)
Subcommander 2.0.0 Beta 5 - http://subcommander.tigris.org
a Win32/Unix/MacOSX subversion GUI client & diff/merge tool.
Received on 2009-10-24 18:55:56 CEST