Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使SrcSrv中包含的svnindex.cmd脚本为源文件编制索引,其中包含URI转义空格?_Svn_Debugging_Windbg_Pdb Files_Srcsrv - Fatal编程技术网

如何使SrcSrv中包含的svnindex.cmd脚本为源文件编制索引,其中包含URI转义空格?

如何使SrcSrv中包含的svnindex.cmd脚本为源文件编制索引,其中包含URI转义空格?,svn,debugging,windbg,pdb-files,srcsrv,Svn,Debugging,Windbg,Pdb Files,Srcsrv,我最近设置了一个符号服务器,并为我们的构建脚本添加了支持,以便我们可以轻松地从现场调试崩溃转储,并让WinDbg和/或Visual Studio调试器从我们的Subversion存储库中获取正确版本的源文件,这些源文件用于编译崩溃的应用程序的任何特定版本 我在构建脚本中添加了一行代码,以调用Windows调试工具软件包附带的stocksvnindex.cmd脚本,但发现脚本garbles存储库文件路径包含URI转义字符,如空格,因此WinDbg无法从存储库下载文件 请注意,svnindex.cm

我最近设置了一个符号服务器,并为我们的构建脚本添加了支持,以便我们可以轻松地从现场调试崩溃转储,并让WinDbg和/或Visual Studio调试器从我们的Subversion存储库中获取正确版本的源文件,这些源文件用于编译崩溃的应用程序的任何特定版本

我在构建脚本中添加了一行代码,以调用Windows调试工具软件包附带的stock
svnindex.cmd
脚本,但发现脚本garbles存储库文件路径包含URI转义字符,如空格,因此WinDbg无法从存储库下载文件

请注意,
svnindex.cmd
(特别是它启动的
svn.pm
Perl脚本)从
svn info
命令的输出中获取源文件的存储库位置,
svn
URI转义存储库路径。当
svnindex.cmd
遇到此问题时,它会破坏路径。例如,它将改变路径

"http://mysvnrepo/My%20Application/trunk/Database%20Layer/OracleAdapter.cs"
进入

结果表明,SrcSrv将“%”之间的任何内容解释为它在运行时替换的变量名


假设重命名存储库中的所有目录以删除空格和其他URI转义的“特殊”字符是不可行的,如何绕过此限制?

解决此问题的快速方法是编辑
svn.pm
Perl脚本,该脚本运行
svnindex.cmd
以将源服务器元数据嵌入到PDB文件中

如果您有WinDbg 6.11.0001.404,则此文件位于Windows调试工具安装目录下的
srcsrv
目录中(例如,在我的计算机上,它位于
C:\Program Files\Debugging Tools for Windows(x86)\srcsrv
)。在旧版本的WinDbg中,此文件位于
sdk\srcsrv
下。在我的例子中,我在构建服务器上编辑了
svn.pm
的副本,因为构建服务器实际上调用了
svnindex.cmd

我的解决方案是,在脚本进一步处理URI转义文件路径之前,只需对其进行unescape。我在
svn.pm
中的
gatherefileinformation
子例程中添加了以下行,在以“Path:”entries上的注释
#循环开始的
while
循环之后。我在该循环的右括号后面添加了这些行(在我的
svn.pm
副本中的第206行):

这解决了问题,并允许我在开发机器上获取运行WinDbg的完整源代码

"http://mysvnrepo/My20Layer/OracleAdapter.cs"
    # Fix for Subversion URL's. The "%" character is treated specially by SRCSRV, so
    # we need to remove URI escape sequeneces to get rid of them
    # - Mike Spross (3/30/2011)

    use URI::Escape;
    $FileRepository = uri_unescape($FileRepository);
    $FileRelative = uri_unescape($FileRelative);