我最近设置了一个符号服务器,并在我们的构建脚本中添加了SrcSrv支持,以便我们可以轻松地从现场调试故障转储,并让 WinDbg 和/或 Visual Studio 调试器从我们的 Subversion 存储库中获取正确版本的源文件用于编译我们应用程序的任何特定版本崩溃。
我在我们的构建脚本中添加了一行来调用svnindex.cmd
Debugging Tools for Windows 软件包附带的 stock 脚本,但发现脚本会混淆包含 URI 转义字符(如空格)的存储库文件路径,因此 WinDbg 无法从存储库。
请注意svnindex.cmd
(特别svn.pm
是它启动的 Perl 脚本)从svn info
命令的输出中获取源文件的存储库位置,以及svn
URI 转义存储库路径。当svnindex.cmd
遇到这种情况时,它会破坏路径。例如,它会转动路径
"http://mysvnrepo/My%20Application/trunk/Database%20Layer/OracleAdapter.cs"
进入
"http://mysvnrepo/My20Layer/OracleAdapter.cs"
事实证明,SrcSrv 将“%”之间的任何内容解释为它在运行时替换的变量名。
假设重命名我们存储库中的所有目录以删除可能被 URI 转义的空格和其他“特殊”字符是不可行的,我该如何解决这个限制?