3572: review board escape % to %25, and server said file is not found.

feix*****@gmai***** (Google Code) (Is this you? Claim this profile.)
What version are you running?
ReviewBoard 2.0.7 / RBTools 0.6.2
Server:Centos
Client:windows 7 64 chinese system

What's the URL of the page containing the problem?
Not applicable as it's a RBTools issue.
------------------------------------

client command:
rbt post -d --diff-filename E:\我的svn\我的地址\我的diff文件.txt.patch

some chinese character in diff file path.

------------------------------------

What steps will reproduce the problem?
1. post a new diff file to reviweboard,and get some errors
2. See RBTools log

------------------------------------


client log is :

>>> RBTools 0.6.2
>>> Python 2.6.6 (r266:84297, Aug 24 2010, 18:46:32) [MSC v.1500 32 bit (Intel)]

>>> Running on Windows-7-6.1.7601-SP1

>>> Current directory = E:\xxxxxx
>>> Checking for a Subversion repository...
>>> Running: svn info --non-interactive
>>> Running: diff --version
>>> Making HTTP GET request to http://192.168.100.8/api/
>>> Making HTTP GET request to http://192.168.100.8/api/review-requests/
>>> Making HTTP POST request to http://192.168.100.80/api/review-requests/
>>> Making HTTP GET request to http://192.168.100.8/api/review-requests/28/diffs
/
>>> Making HTTP POST request to http://192.168.100.8/api/review-requests/28/diff
s/
>>> Got API Error 207 (HTTP code 400): The file was not found in the repository.

>>> Error data: {u'stat': u'fail', u'file': u'/PUBLIC/%xx%xx%xx%xx%xx', u'err': {u'msg': u'The file was n
ot found in the repository.', u'code': 207}, u'revision': u'702'}
Traceback (most recent call last):
  File "C:\Python26\Scripts\rbt-script.py", line 9, in <module>
    load_entry_point('RBTools==0.6.2', 'console_scripts', 'rbt')()
  File "C:\Python26\lib\site-packages\rbtools-0.6.2-py2.6.egg\rbtools\commands\m
ain.py", line 133, in main
    command.run_from_argv([RB_MAIN, command_name] + args)
  File "C:\Python26\lib\site-packages\rbtools-0.6.2-py2.6.egg\rbtools\commands\_
_init__.py", line 416, in run_from_argv
    exit_code = self.main(*args) or 0
  File "C:\Python26\lib\site-packages\rbtools-0.6.2-py2.6.egg\rbtools\commands\p
ost.py", line 783, in main
    submit_as=self.options.submit_as)
  File "C:\Python26\lib\site-packages\rbtools-0.6.2-py2.6.egg\rbtools\commands\p
ost.py", line 550, in post_request
    raise CommandError(u'\n'.join(error_msg))
rbtools.commands.CommandError: Error uploading diff


The file was not found in the repository. (HTTP 400, API Error 207)

Your review request still exists, but the diff is not attached.


Svn Server http log is:

192.168.100.8 - username [16/Sep/2014:15:49:40 +0800] "PROPFIND /svn/mysvn/!svn/bc/702/PUBLIC/%25xx%25xx%25xx%25xx%25xx%25xx HTTP/1.1" 404 369 "-" "SVN/1.6.11 (r934486) neon/0.29.3"


------------------------------------
Operating system: Windows 7-64 chinese system
Browsers: Internet Explorer 8 / Google Chrome
python version: python2.6.6 utf-8
------------------------------------

Hello,

My repo conf in reviewboard admin is http://username:password@www.mysite.com/svn/mysvn/

When i rbt post diff file, the client log is 
/PUBLIC/%xx%xx%xx%xx%xx%xx%xx%xx%xx%xx%xx%xx/mysql\uxxxx\uxxxx\ufxxxx\uxxxx.txt

Svn server's http log is 
PUBLIC/%25xx%25xx%25xx%25xx%25xx%25xx%25xx%25xx%25xx%25xx%25xx%25xx/mysql%EF%BF%BDxxx.txt

I guess reviewboard escape % to %25, so the server said can't find file.

Thanks and Best regards.
#1 yiping.chi

It seems like this issue affects space, 0x20, too.