Почему SharpSVN SvnClient.Export (...) не всегда находит файлы, которые должны быть там? - PullRequest
6 голосов
/ 23 июня 2010

Я использую функцию-член Export () для получения файлов с конкретными ревизиями, которая работает, но по некоторым причинам в других случаях это не так.Похоже, что для всех измененных путей это работает с удаленными и иногда добавленными файлами в этой ревизии, я получаю исключение, утверждающее, что по используемому URL-адресу нет файла.Когда я использую TurtoiseSVNs «Копировать ревизию в ...» по этим путям, она работает нормально, и мне просто интересно, если я что-то упустил с SharpSVN, я хотел бы получить полные версии при ревизии всех измененных файлов.Вот общая идея моего кода:

if (logentry.ChangedPaths != null)
{
     foreach (SvnChangeItem svnChangeItem in logentry.ChangedPaths)
     {
         SvnExportArgs ex = new SvnExportArgs();
         ex.Revision = revisionNum;
         client.Export(SvnTarget.FromUri(new Uri(pathInsideRepo)), exportFile, ex);
     }
}

Любая помощь или предложения будут оценены, спасибо.

Ответы [ 2 ]

2 голосов
/ 24 июня 2010

Клиент командной строки ведет себя так же. Что происходит, так это то, что URL-адреса, указывающие на файл, могут приходить и уходить. Это означает, что URL, указывающий на файл, который теперь удален, недействителен, если только вы не укажете, что хотите использовать более старый URL. Это называется ревизией колышка.

Прочтите исправления колышков в svnbook.

2 голосов
/ 23 июня 2010

Я обнаружил, что использование SvnUriTarget вместо URI с SvnExportArgs позволило мне получить правильную информацию. Не уверен, почему они разные, но это работает.

поэтому вместо экспорта выше я использовал:

client.Export(new SvnUriTarget(new Uri(pathInsideRepo), revisionNumber), exportFile, ex);

Ответ, который я нашел, был на текст ссылки

...