Наскоро настроих символен сървър и добавих SrcSrv поддръжка на нашите скриптове за изграждане, така че да можем лесно да отстраняваме грешки при сривове от полето и да накараме WinDbg и/или програмата за отстраняване на грешки на Visual Studio да получат правилната версия на изходните файлове от нашето Subversion хранилище, които са били използвани за компилиране на каквато и да е конкретна версия на нашето приложение се срина.
Добавих ред към нашия скрипт за изграждане, за да извикам стандартния svnindex.cmd
скрипт, който идва с пакета Инструменти за отстраняване на грешки за Windows, но открих, че скриптът изкривява файловите пътища на хранилището, които съдържат символи, екранирани от 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, не е осъществимо, как да заобиколя това ограничение?