如果我从 svn 存储库中检查一个目录,并且存储库内的路径包含括号,当我尝试重新检查工作目录时,我会收到一条 svn 'Commit failed' 消息。
我知道在路径名中使用括号不是一个好习惯;我只是想收拾别人的烂摊子。
这是检查此类存储库的示例:
$ svn co http://cvs.xyzzy.com/svn/ie/Userhome/bchittenden/Test%20%28With%20Stupid%20Parentheses%29/
A Test (With Stupid Parentheses)/foo
A Test (With Stupid Parentheses)/bar
A Test (With Stupid Parentheses)/baz
Checked out revision 61793.
当我尝试提交时,我收到以下消息:
$ svn ci
Adding branches
Adding tags
Adding trunk
svn: Commit failed (details follow):
svn: A MERGE response for '/svn/ie/Userhome/bchittenden/Test%20(With%20Stupid%20Parentheses)/tags' is not a child of the destination ('/svn/ie/Userhome/bchittenden/Test%20%28With%20Stupid%20Parentheses%29')
svn: Your commit message was left in a temporary file:
svn: '/tmp/Test (With Stupid Parentheses)/svn-commit.tmp'
请注意,更改确实会签入存储库,我可以签出存储库的新版本并在那里工作,但是当我尝试签入时会收到相同的消息。
如果我对此的解释正确,那么当 SVN 服务器尝试验证正在提交的文件的名称时,它没有正确地 URL 编码路径名中的 '(' 和 ')' 字符。我在错误消息上尝试了几次 Google 搜索is not a child of the destination
,但找不到解决方法。