Subject: Re: [PATCH 1/8] SVN 1.7 will truncate "not-a%40{0}" to just "not-a".

From: Michael G Schwern <[email-masked]>
Date: Sat, 28 Jul 2012 12:32:04 -0700

On 2012.7.28 7:16 AM, Jonathan Nieder wrote:
> Michael G. Schwern wrote:
> 
>> Rather than guess what SVN is going to do for each version, make the test use
>> the branch name that was actually created.
> [...]
>> -		git rev-parse "refs/remotes/not-a%40{0}reflog"
>> +		git rev-parse "refs/remotes/$non_reflog"
> 
> Doesn't this defeat the point of the testcase (checking that git-svn
> is able to avoid creating git refs containing @{, following the rules
> from git-check-ref-format(1))?

Unless I messed up, entirely possible as I'm not a shell programmer, the test
is still useful for testing SVN 1.6.  Under SVN 1.6 $non_reflog should be
'not-a%40{0}reflog' as before.

> Do you know when SVN truncates the directory name?

IIRC its silently does it during the "svn cp".

> Would historical
> SVN repositories or historical SVN servers be able to have a directory
> named with a %40 in it, or has this been disallowed completely,
> leaving problematic historical repositories to be dumped with old SVN,
> tweaked, and reloaded with new SVN?

Dunno, lemme check...

$ source ~/bin/svn16
$ svnadmin --version
svnadmin, version 1.6.18 (r1303927)
...
$ svnadmin create svnrepo
$ mkdir project project/trunk project/branches project/tags
$ echo foo > project/trunk/foo
$ svn import -m 'test import' project
file:///Users/schwern/tmp/test/svnrepo/project
Adding         project/tags
Adding         project/trunk
Adding         project/trunk/foo
Adding         project/branches

Committed revision 1.
$ rm -rf project/
$ svn cp -m 'reflog' file:///Users/schwern/tmp/test/svnrepo/project/trunk
'file:///Users/schwern/tmp/test/svnrepo/project/branches/not-a%40{0}reflog'

Committed revision 2.
$ svn ls file:///Users/schwern/tmp/test/svnrepo/project/branches
not-a@{0}reflog/
$ source ~/bin/svn17
$ svn --version
svn, version 1.7.5 (r1336830)
...
$ svn ls file:///Users/schwern/tmp/test/svnrepo/project/branches
not-a@{0}reflog/

If you make it with SVN 1.6 its still there with SVN 1.7.  That's good, it
means you can ship a prebuilt repository and check it against SVN 1.7.

The bad news is the new code segfaults on it.  I don't know if that's the SVN
1.7 API choking on its own stuff or because of my changes or both.  If you set
up the test I can try and fix it.  Otherwise I'll just flounder in shell.

-- 
"I went to college, which is a lot like being in the Army, except when
 stupid people yell at me for stupid things, I can hit them."
    -- Jonathan Schwarz