4

I want to use the status method but i dont understand how it works. Could someone show me an example of use please?

EventHandler < SvnStatusEventArgs > statusHandler = new EventHandler<SvnStatusEventArgs>(void(object, SvnStatusEventArgs) target);
client.Status(path, statusHandler);
Noon Silk
  • 54,084
  • 6
  • 88
  • 105
Pedro
  • 65
  • 3
  • 5

3 Answers3

3

Well, it'll work exactly like the svn status command : http://svnbook.red-bean.com/en/1.0/re26.html

You'll get the list of files pumped to the 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'
}
Ben
  • 1,638
  • 2
  • 14
  • 21
Noon Silk
  • 54,084
  • 6
  • 88
  • 105
3

Or if you don't mind inline delegates:

using(SvnClient client = new SvnClient())
{
   client.Status(path,
                 delegate(object sender, SvnStatusEventArgs e)
                 {
                    if (e.LocalContentStatus == SvnStatus.Added)
                       Console.WriteLine("Added {0}", e.FullPath);
                 });
}

Note that the delegate versions of the SharpSvn functions are always a (tiny) bit faster than the revisions returns a collection as this method allows marshalling the least amount of information to the Managed world. You can use Svn*EventArgs.Detach() to marshall everything anyway. (This is what the .GetXXX() functions do internally)

Bert Huijben
  • 19,525
  • 4
  • 57
  • 73
1

The inline delegate version worked for me but the EventHandler<T> version didn't work until I set the type to EventHandler<SvnStatusEventArgs>.

user877219
  • 11
  • 1