2013-02-19 3 views
1

У меня возникли проблемы с чернильницей некоторых папок из репо с использованием SharpSvn (из C#). Я сделал это:SharpSvn: Почему обновление вложенной папки из Empty Depth Checkout пропущено?

client.CheckOut(uri, dir, new SvnCheckOutArgs() { Depth = SvnDepth.Empty }); 
foreach(var folder in folders) 
{ 
    client.Update(folder); 
} 

Но мой второй вызов Update не работает. Сообщается, что действие было SvnNotifyAction.Skip, и ничто не будет записано в рабочую копию.

URI, по существу что-то вроде: svn://myserver/myrepo/mysdk и дир нечто вроде C:\Test\mysdk. (Я изменил точные названия для целей этого вопроса, но конструктивно это идентично.)

Тогда первая папка C:\Test\mysdk\include (это работает)

Затем вторая папка C:\Test\mysdk\bin\v100\x86 (это один не update)

Почему первый работает, но когда я получаю вторую папку (вложенные подпапки), она не обновляется? Он сообщает, что он пропущен? Но я не знаю, как понять, почему.

ответ

3

Оказалось, что обновление вложенного подкаталога не работает, поскольку родительские каталоги еще не существуют, поэтому обновление вложенного подкаталога пропущено. Чтобы исправить это, мне нужно было добавить аргумент Update, чтобы указать, что он должен создавать родительские каталоги.

(эквивалентная опция командной строки svn будет --parents).

client.Update(folder, new SvnUpdateArgs() { UpdateParents = true }); 

Я обнаружил это, пытаясь сделать это вручную из командной строки SVN (и столкнулся с той же проблемой.) svn help co предложил эту крошечную подсказку: --parents: сделать промежуточные каталоги Я предполагаю, что UpdateParents и --parents эквивалентны. Все идет нормально.

 Смежные вопросы

  • Нет связанных вопросов^_^