How to programatically do file versioning with SVN and .NET?

Posted on

Problem :

We have a report generator. Daily, it writes its data into a excel file.

For reasons of version controlling and file data safety, we need to alter this file, and commit the changes into a repository.

Do you recommend any .net SVN API you’ve used?

Solution :

You should take a look at the SharpSvn .NET library. You will probably need checkout and commit commands:

Checking out:

string wcPath = "c:\my working copy";
using (SvnClient client = new SvnClient())
    client.CheckOut(new Uri("http://server/path/to/repos"), wcPath);


string wcPath = "c:\my working copy";
SvnCommitArgs a = new SvnCommitArgs();
a.LogMessage = "My log message";

using (SvnClient client = new SvnClient())
    client.Commit(wcPath, a);

You might be able to turn on Autoversioning for your repository. Since it uses WebDAV, you can treat the repository just like a network drive (Web Folder). And you can treat the file as a normal file, just open, modify, and save.

If it were me , I would create a new repository for the excel data files. I don’t think I’d like my code being autoversioned 🙂

We are using tool that actually searching for installed TortoiseSVN in predefined locations and using it command-line api. If that is for Windows and it’s for not redistribution – it might be easier to do.

Helpful code for cmd:

@echo off
if exist "%ProgramW6432%TortoiseSVNbinTortoiseProc.exe" set patht=%ProgramW6432%
if exist "%ProgramFiles%TortoiseSVNbinTortoiseProc.exe" set patht=%ProgramFiles%
if exist "%ProgramFiles(x86)%TortoiseSVNbinTortoiseProc.exe" set patht=%ProgramFiles(x86)%

echo Placing SVN Commit
"%patht%TortoiseSVNbinTortoiseProc.exe" /command:commit /path:"%CD%" /notempfile    

If you still want to do that task from code – SharpSVN is better choiсe

The simplest would be to spawn a process and call SVN.exe
to commit your changes.

Here is a similiar question that was asked.

Does anyone know of a good C# API for Subversion?

Here is another resource

SVN Libraries for .NET?

Leave a Reply

Your email address will not be published. Required fields are marked *