鸟语天空
SharpSvn
post by:追风剑情 2016-8-4 17:33

利用SharpSvn操作SVN

一、下载SharpSvn

https://sharpsvn.open.collab.net/

目标框架
.NET Framework 2.0

测试代码

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Text;
using SharpSvn;
using SharpSvn.Remote;
using SharpSvn.Security;

namespace SharpSVNTest
{
    class Program
    {
        static void Main(string[] args)
        {
            SVN.Checkout();
            SVN.Update();
            SVN.Commit();
            SVN.GetStatus();
            SVN.TraversalSvnRemoteStat();

            Console.WriteLine("按任意键退出...");
            Console.Read();
        }
    }

    public class SVN
    {
        public static string path = @"https://zwwx-svn/svn/sanguo/branches/res/2015-12-21_res_korea/android_res/resource";

        public static void Checkout()
        {
            using (SvnClient client = new SvnClient())
            {
                client.CheckOut(new Uri(path),
                                     "c:\\sharpsvn");
                Console.WriteLine("Checkout Finish!");
            }
        }

        public static void Update()
        {
            using (SvnClient client = new SvnClient())
            {
                client.Update("c:\\sharpsvn");
                Console.WriteLine("Update Finish!");
            }
        }

        public static void Commit()
        {
            using (SvnClient client = new SvnClient())
            {
                SvnCommitArgs ca = new SvnCommitArgs();
                ca.LogMessage = "没做任何修改......";
                client.Commit("c:\\sharpsvn", ca);

                Console.WriteLine("Commit Finish!");
            }
        }

        public static void GetStatus()
        {
            using (SvnClient client = new SvnClient())
            {
                SvnStatusArgs args = new SvnStatusArgs();
                args.Depth = SvnDepth.Empty;
                args.RetrieveRemoteStatus = false;
                Collection<SvnStatusEventArgs> list = new Collection<SvnStatusEventArgs>();
                client.GetStatus(@"c:\\sharpsvn", args, out list);
                foreach (SvnStatusEventArgs eventArgs in list)
                {
                    //从eventArgs中获取每个变更文件的相关信息
                    Console.WriteLine("Path={0}, Revision={1}", eventArgs.Path, eventArgs.Revision);
                }
            }
        }

        //遍历远程svn目录下的文件(非递归)
        public static void TraversalSvnRemoteStat()
        {
            SvnRemoteSession remoteSession = new SvnRemoteSession(new Uri(path));

            long rev;
            remoteSession.GetLatestRevision(out rev);
            Console.WriteLine("LatestRevision=" + rev);

            remoteSession.List(null,
                new EventHandler<SvnRemoteListEventArgs>(
                    delegate(object s, SvnRemoteListEventArgs e)
                    {
                        SvnRemoteSession remote = new SvnRemoteSession(new Uri(path + "/" + e.Name));
                        SvnRemoteStatEventArgs stat;
                        remote.GetStat("", out stat);
                        Console.WriteLine("Name={0}, Revision={1}, FileSize={2}", e.Name, stat.Entry.Revision, stat.Entry.FileSize);
                    }));
            Console.WriteLine("遍历完成!");
        }
    }
}

 

运行效果

1111111.png

 

评论:
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容