I recently set up a symbol server and added SrcSrv support to our build scripts so that we can easily debug crash dumps from the field and have WinDbg and/or the Visual Studio debugger get the correct version of the source files from our Subversion repository that were used to compile whatever particular version of our application crashed.
I added a line to our build script to invoke the stock svnindex.cmd
script that comes with the Debugging Tools for Windows package, but found out the script garbles repository filepaths that contain URI-escaped characters such as spaces, so WinDbg can't download the files from the repository.
Note that svnindex.cmd
(specifically the svn.pm
Perl script that it kicks off) gets repository locations for source files from the output of the svn info
command, and svn
URI-escapes repository paths. When svnindex.cmd
encounters this, it mangles the path. For example, it will turn the path
"http://mysvnrepo/My%20Application/trunk/Database%20Layer/OracleAdapter.cs"
into
"http://mysvnrepo/My20Layer/OracleAdapter.cs"
It turns out that SrcSrv interprets anything between "%" as a variable name that it replaces at runtime.
Assuming that renaming all the directories in our repository to remove spaces and other "special" characters that would be URI-escaped is not feasible, how do I get around this limitation?