在我自己最初使用SharpSvn的时候,在网上找了 很久,很少相应的中文介绍的。这里就我个人的使用心得,简单介绍下SharpSvn的使用。
一般来说,在调用Svn去做一下操作时,主要有两种方式:一种就是调用Svn自带的svn.exe命令行,另外一种就是调用Svn API接口的方式。
对于Svn.exe,是需要本地安装有Svn服务或者是要远程调用服务器种的svn.exe,这种方式可以自己定义方法的内容,但是要熟悉svn相应的操作命令。这里不多介绍,本文主要是介绍Svn API接口的方式的其中一种现成的接口SharpSvn的使用。
关于SharpSvn接口,可以到SharpSvn的主页:http://sharpsvn.open.collab.net/下载。
下面进入正题。
1、 加载SharpSvn
下载好SharpSvn后,可以在程序里面加载进去了。加载方法跟加载其它的接口一样,只需要在解决方案里面的引用种添加引用,然后选择下载的SharpSvn.dll,就可以加载进去了。
2、 SharpSvn基本操作
首先,需要在代码前面使用using SharpSvn;
然后,下面通过一段代码来说明SharpSvn的使用:
using (SvnClient client = new SvnClient())
{
string strRepoUri = "http://localhost:8080/svn/test"; //Svn地址
string strLocalUri = "D:\\SvnTest\\"; //本地副本地址
SvnInfoEventArgs info; //Info参数
client.GetInfo(new Uri(strRepoUri),out info); //调用GetInfo()方法
Console.WriteLine(info.Reversion.toString()); //输出版本
SvnImportArgs importArgs = new SvnImportArgs(); //Import参数
importArgs.LogMessage = "Improt Test"; //Import时的日志信息
client.Improt(strLocatUri + "test.txt",new Uri(strRepoUri), importArgs); //执行Svn 的Import命令
client.Update(strLocalUri);
}
通过上面的代码可以看出,所有的SharpSvn方法,都是通过定义SvnClient的对象来调用的。这个是一个虚拟客户端,可以让你在本地不用安装Svn客户端工具而直接操作Svn对应的操作(如:Update、Commit、Import等)。
定义了SvnClient对象后,你就可以通过SvnClient对象(client)直接调用对应的函数进行你想要的操作了。
至于SharpSvn包含有什么函数,可以在对象浏览器中查看的。
3、 SharpSvn鉴权操作
SharpSvn鉴权操作,是通过SvnClient.Authentication接口实现的。
using (SvnClient client = new SvnClient())
{
client.Authentication.Clear(); //清除原有的账户信息
//重新设定账户信息
Client.Authentication.UserNamePasswordHandlers += new EventHandler<SharpSvn.Security.SvnUserNamePasswordEventArgs>(delegate(object s,SharpSvn.Security.SvnUserNamePasswordEventArgs e))
{
e.UserName = "test";
e.Password = "test";
}
}
上面代码是后台固定的账户密码的,在操作界面没法改变。
如果要在操作界面上动态输入账户密码,则需设定一个账户密码输入的界面即可。
4、 SharpSvn异常处理
using (SvnClient client = new SvnClient())
{
string strRepoUri = "http://localhost:8080/svn/test"; //Svn地址
string strLocalUri = "D:\\SvnTest\\"; //本地副本地址
SvnImportArgs importArgs = new SvnImportArgs(); //Import参数
importArgs.LogMessage = "Improt Test"; //Import时的日志信息
client.Improt(strLocatUri + "test.txt",new Uri(strRepoUri), importArgs); //执行Svn 的Import命令
//异常捕获和处理
importArgs.SvnError += new EventHandler<SvnErrorEventArgs> (delegate(object sender, SvnErrorEventArgs e))
{
//若文件已经存在
if(e.Exception.SvnErrorCode == SvnErrorCode.SVN_ERR_ENTRY_EXISTS)
{
Console.WriteLine("Exists!!");
}
}
}
SharpSvn自带的枚举(SvnErrorCode.SVN_ERR_ENTRY_EXISTS)有很多异常类型,可以通过错误码(SvnErrorCode)来区分是那种异常。然后做出你想要的处理方式。
5、 没有本地副本的SharpSvn操作
前面的介绍,都是要在本地有Svn的本地副本目录才能操作的。下面介绍不用本地副本,直接操作Svn服务的方法。
SharpSvn接口中,SvnClient类定义了很多的由Remote开头的方法,如:RemoteDelete、RemoteImprot、RemoteMove等的。这些由Remote开头的方法,就可以让你没有本地副本而操作Svn。
using (SvnClient client = new SvnClient())
{
//删除文件
SvnDeleteArgs deleteArgs = new SvnDeleteArgs();
deleteArgs.LogMessage = "RemoteDelete Test";
client.RemoteDelete(new Uri(strRepoUri + "//test.txt"), deleteArgs);
//创建Svn目录
SvnCreateDirectoryArgs createArgs = new SvnCreateDirectoryArgs();
createArgs.LogMessage = "Create Directory Test.";
client.RemoteCreateDirectory(new Uri(strRepoUri + "//test") ,createArgs);
}
上面都是一些SharpSvn简单的几种用法。其实很多方法,可以通过对象浏览器查看然后调用的。希望能对大家有点帮助。