Usando client.status en C # con sharpsvn
Pregunta
Quiero usar el método de estatus, pero yo no entiendo cómo funciona. Podría alguien mostrar un ejemplo de su uso, por favor?
EventHandler < SvnStatusEventArgs > statusHandler = new EventHandler<SvnStatusEventArgs>(void(object, SvnStatusEventArgs) target);
client.Status(path, statusHandler);
Solución
Bueno, funcionará exactamente igual que el comando svn status
: http: / /svnbook.red-bean.com/en/1.0/re26.html
Usted obtendrá la lista de archivos bombeados a la manejador de sucesos:
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'
}
Otros consejos
O si no te importa delegados en línea:
using(SvnClient client = new SvnClient())
{
client.Status(path,
delegate(object sender, SvnStatusEventArgs e)
{
if (e.LocalContentStatus == SvnStatus.Added)
Console.WriteLine("Added {0}", e.FullPath);
});
}
Tenga en cuenta que las versiones de los delegados de las funciones SharpSvn son siempre una (pequeña) poco más rápido que las revisiones devuelve una colección ya que este método permite el guiado de la menor cantidad de información al mundo administrado. Puede utilizar Svn * EventArgs.Detach () para ordenar todo lo que de todos modos. (Esto es lo que el .GetXXX () funciones hacen internamente)
La versión en línea delegado trabajó para mí, pero la versión EventHandler<T>
no funcionó hasta que establezca el tipo en EventHandler<SvnStatusEventArgs>
.