tags:

views:

804

answers:

2

Hi,

I would like to add all unversioned files under a directory to SVN using SharpSVN.

I tried regular svn commands on the command line first:

C:\temp\CheckoutDir> svn status -v

I see all subdirs, all the files that are already checked in, a few new files labeled "?", nothing with the "L" lock indication

C:\temp\CheckoutDir> svn add . --force

This results in all new files in the subdirs ,that are already under version control themselves, to be added.

I'd like to do the same using SharpSVN. I copy a few extra files into the same directory and run this code:

...
using ( SharpSvn.SvnClient svn = new SvnClient() )
{
    SvnAddArgs saa = new SvnAddArgs();
    saa.Force = true;
    saa.Depth = SvnDepth.Infinity;
    try
    {
        svn.Add(@"C:\temp\CheckoutDir\." , saa);
    }
    catch (SvnException exc)
    {
        Log(@"SVN Exception: " + exc.Message + " - " + exc.File);
    }
}

But an SvnException is raised:

  • SvnException.Message: Working copy 'C:\temp\CheckoutDir' locked
  • SvnException.File: ..\..\..\subversion\libsvn_wc\lock.c"

No other svnclient instance is running in my code, I also tried calling

svn.cleanup()

right before the Add, but to no avail.

Since the documentation is rather vague ;), I was wondering if anyone here knew the answer.

Thanks in advance!

Jan

+1  A: 

I think you shouldn't suffix the path with a ','. Try:

svn.Add(@"C:\temp\CheckoutDir" , saa);

Please do discuss this further on the SharpSvn discussion board/mailing list, because the behavior you are seeing might be a bug.

Sander Rijken
The code you propose tells me: "C:\temp" is not under version control. Which is right. But doesn't help me. I'll post on the forums as soon as I can. Thanks!
jan
+1  A: 

Use this my tool http://svncompletesync.codeplex.com/ or take it as a sample. It does exactly what you need.

Malcolm Frexner