c# sharpsvn 客户端开发测试

1:没有工作副本,上传时会报错的.

会提示本地目录不是not a working copy   而此中文名称就是工作副本, 本地要与svn服务器公用的一个文件夹. 

所以每次要checkout 然后才能执行add  commit 或 updata

 2:  commit上传新文件上边问题解决,然后直接 commit 时 报错 :commit failed ( details follow)

因为没有先add 直接进行commit了.

第一次add后,再去掉add ,然后commit 也不提示错误了.说明服务器没回错误,他就认这个add标志.

3: 此文件用update 函数测试和修改上次上传的文件进行测试

 未改进 更新,未提示错误,  修改文件之后也正常

测试未加add 标志测试  提示文件不存在 ,看来未进行commit 不能进行update;

 4:大文件上传断网测试

 在源环境下没有任何异常提示.上网在传 ,提示文件locked ;使用udate 上传,提示服务器未有此文件,本地文件加锁,应该是客户端内部程序加上.

 

 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简单的几种用法。其实很多方法,可以通过对象浏览器查看然后调用的。希望能对大家有点帮助。

 

6.1 列出目录下的所有元素(非递归)

string dirPath = @"https://10.23.34.45:6801/svn/temp";
string dirRelPath = remoteSession.MakeRepositoryRootRelativePath(new Uri(dirPath)); //获取相对目录相对配置库根目录的相对路径
remoteSession.List(dirRelPath,
    new EventHandler<SvnRemoteListEventArgs>(
        delegate (object s, SvnRemoteListEventArgs e)
        {
            //e.Name: 元素名
            //e.Path: 元素路径
            //e.RetrievedRevistion: 元素的版本号
        }));

转载于:https://www.cnblogs.com/zuochanzi/p/6655747.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值