En utilisant client.status en c # avec sharpsvn
Question
Je veux utiliser la méthode d'état, mais je ne comprends pas comment cela fonctionne. Quelqu'un pourrait-il me montrer un exemple d'utilisation s'il vous plaît?
EventHandler < SvnStatusEventArgs > statusHandler = new EventHandler<SvnStatusEventArgs>(void(object, SvnStatusEventArgs) target);
client.Status(path, statusHandler);
La solution
Eh bien, ça va marcher exactement comme la commande svn status
: http: / /svnbook.red-bean.com/en/1.0/re26.html
Vous obtiendrez la liste des fichiers pompés au gestionnaire d'événements:
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'
}
Autres conseils
Ou si vous ne me dérange pas les délégués inline:
using(SvnClient client = new SvnClient())
{
client.Status(path,
delegate(object sender, SvnStatusEventArgs e)
{
if (e.LocalContentStatus == SvnStatus.Added)
Console.WriteLine("Added {0}", e.FullPath);
});
}
Notez que les versions de déléguer des fonctions SharpSvn sont toujours un (petit) peu plus vite que les révisions retourne une collection car cette méthode permet marshalling la moindre quantité d'informations au monde géré. Vous pouvez utiliser Svn * EventArgs.Detach () pour marshall tout de toute façon. (C'est ce que les fonctions .GetXXX () font en interne)
La version de délégué en ligne a fonctionné pour moi, mais la version EventHandler<T>
n'a pas fonctionné jusqu'à ce que je mets le type à EventHandler<SvnStatusEventArgs>
.