• J
    svn test: escape peg revision separator using empty peg rev · 44bc5ac7
    Jonathan Nieder 提交于
    This test script uses "svn cp" to create a branch with an @-sign in
    its name:
    
    	svn cp "pr ject/trunk" "pr ject/branches/not-a@{0}reflog"
    
    That sets up for later tests that fetch the branch and check that git
    svn mangles the refname appropriately.
    
    Unfortunately, modern svn versions interpret path arguments with an
    @-sign as an example of path@revision syntax (which pegs a path to a
    particular revision) and truncate the path or error out with message
    "svn: E205000: Syntax error parsing peg revision '{0}reflog'".
    
    When using subversion 1.6.x, escaping the @ sign as %40 avoids trouble
    (see 08fd28bb, 2010-07-08).  Newer versions are stricter:
    
    	$ svn cp "$repo/pr ject/trunk" "$repo/pr ject/branches/not-a%40{reflog}"
    	svn: E205000: Syntax error parsing peg revision '%7B0%7Dreflog'
    
    The recommended method for escaping a literal @ sign in a path passed
    to subversion is to add an empty peg revision at the end of the path
    ("branches/not-a@{0}reflog@").  Do that.
    
    Pre-1.6.12 versions of Subversion probably treat the trailing @ as
    another literal @-sign (svn issue 3651).  Luckily ever since
    v1.8.0-rc0~155^2~7 (t9118: workaround inconsistency between SVN
    versions, 2012-07-28) the test can survive that.
    
    Tested with Debian Subversion 1.6.12dfsg-6 and 1.7.5-1 and r1395837
    of Subversion trunk (1.8.x).
    Signed-off-by: NJonathan Nieder <jrnieder@gmail.com>
    Tested-by: NMichael J Gruber <git@drmicha.warpmail.net>
    Signed-off-by: NEric Wong <normalperson@yhbt.net>
    44bc5ac7
t9118-git-svn-funky-branch-names.sh 2.6 KB