Usando client.status em C# com Sharpsvn
Pergunta
Eu quero usar o método de status, mas não entendo como ele funciona. Alguém poderia me mostrar um exemplo de uso, por favor?
EventHandler < SvnStatusEventArgs > statusHandler = new EventHandler<SvnStatusEventArgs>(void(object, SvnStatusEventArgs) target);
client.Status(path, statusHandler);
Solução
Bem, vai funcionar exatamente como o svn status
comando: http://svnbook.red-bean.com/en/1.0/re26.html
Você receberá a lista de arquivos bombeados para o 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'
}
Outras dicas
Ou se você não se importa com delegados embutidos:
using(SvnClient client = new SvnClient())
{
client.Status(path,
delegate(object sender, SvnStatusEventArgs e)
{
if (e.LocalContentStatus == SvnStatus.Added)
Console.WriteLine("Added {0}", e.FullPath);
});
}
Observe que as versões delegadas das funções do Sharpsvn são sempre um pouco mais rápidas do que as revisões, retorna uma coleção, pois esse método permite organizar a menor quantidade de informações ao mundo gerenciado. Você pode usar o SVN*EventArgs.Detach () para marcar tudo de qualquer maneira. (Isso é o que as funções .getxxx () fazem internamente)
A versão em linha de delegado em linha funcionou para mim, mas o EventHandler<T>
a versão não funcionou até eu definir o tipo para EventHandler<SvnStatusEventArgs>
.