Hi I use C# and SharpSvn library. I would like to check if file is under source control before adding it with SvnClient.Add. When I do it on file that already is under SVN than I get error : "is already under version control".
Asked
Active
Viewed 6,253 times
2 Answers
10
This pretty well demonstrates how to do it using status
using(SvnClient client = new SvnClient())
{
SvnStatusArgs sa = new SvnStatusArgs();
sa.Depth = SvnDepth.Empty; // Adjust this to check direct files, or (recursive) directories etc
Collection<SvnStatusEventArgs> statuses;
client.GetStatus("c:\\somefile.txt", sa, out statuses);
Assert.That(statuses.Count, Is.EqualTo(1));
Assert.That(SvnStatus.NotVersioned, Is.EqualTo(statuses[0].LocalContentStatus));
}

Sander Rijken
- 21,376
- 3
- 61
- 85
-
5Checking with .GetInfo() is a bit cheaper (io-wise) if you only need to know if the file is under source control and not if the file is modified. – Bert Huijben Dec 10 '10 at 21:08
-
`.Status()` will do a file comparison if the file might have been modified, so worst case in case only the last byte of a 2 GByte file was modified it might almost read 2*2 GByte to determine this. With `.Info()` you are sure this never happens. – Bert Huijben Jul 19 '17 at 10:06
6
If you only want to know if the file is under source control you could use .Info()
/ .GetInfo()
. That method is generally faster as it doesn't have to check if the file has changed since it was checked out.

Sander Rijken
- 21,376
- 3
- 61
- 85

Bert Huijben
- 19,525
- 4
- 57
- 73
-
`.Status()` will do a file comparison if the file might have been modified, so worst case in case only the last byte of a 2 GByte file was modified it might almost read 2*2 GByte to determine this. With `.Info()` you are sure this never happens. – Bert Huijben Jul 19 '17 at 10:06