Использование client.status в C# с sharpsvn
Я хочу использовать метод статуса, но я не понимаю, как он работает. Может кто-нибудь показать мне пример использования, пожалуйста?
EventHandler < SvnStatusEventArgs > statusHandler = new EventHandler<SvnStatusEventArgs>(void(object, SvnStatusEventArgs) target);
client.Status(path, statusHandler);
3 ответа
Ну, это будет работать так же, как svn status
команда: http://svnbook.red-bean.com/en/1.0/re26.html
Вы получите список файлов, закачанных в EventHandler:
using(SvnClient client = /* set up a client */ ){
EventHandler<SvnStatusEventArgs> statusHandler = new EventHandler<SvnStatusEventArgs>(HandleStatusEvent);
client.Status(@"c:\foo\some-working-copy", statusHandler);
}
...
void HandleStatusEvent (object sender, SvnStatusEventArgs args)
{
switch(args.LocalContentStatus){
case SvnStatus.Added: // Handle appropriately
break;
}
// review other properties of 'args'
}
Или, если вы не возражаете против встроенных делегатов:
using(SvnClient client = new SvnClient())
{
client.Status(path,
delegate(object sender, SvnStatusEventArgs e)
{
if (e.LocalContentStatus == SvnStatus.Added)
Console.WriteLine("Added {0}", e.FullPath);
});
}
Обратите внимание, что версии делегатов функций SharpSvn всегда (крошечные) немного быстрее, чем ревизии возвращают коллекцию, поскольку этот метод позволяет направлять наименьшее количество информации в управляемый мир. Вы можете использовать Svn*EventArgs.Detach(), чтобы все упорядочить в любом случае. (Это то, что функции.GetXXX() делают внутри)
Встроенная версия делегата работала для меня, но EventHandler<T>
версия не работала, пока я не установил тип EventHandler<SvnStatusEventArgs>
,