c# sharpsvn 客戶端開發記錄


來源:http://www.macaihong.net/zuochanzi/59784_988955.html

判斷文件夾是否是 working copy 工作副本兩個方法

if (!IsWorkingCopy(localPath))//查看某目錄是否是受svn管理的狀態, 即是否為工作副本
{
notiny = "正在檢出文件.";
ShowInfo();
result = client.CheckOut(new SvnUriTarget(onlineSVN), localPath);
ShowInfo("文件檢出完成.");
}
if (!SvnTools.IsManagedPath(localPath))//查看某目錄是否是受svn管理的狀態, 即是否為工作副本
{
notiny = "正在檢出文件.";
ShowInfo();
result = client.CheckOut(new SvnUriTarget(onlineSVN), localPath);
ShowInfo("文件檢出完成.");
}

public bool IsWorkingCopy(string path)
{

var uri = client.GetUriFromWorkingCopy(path);
return uri != null;

}

 

==============================

SharpSvn使用說明

來源:https://blog.51cto.com/xiweicheng/923476

 在我自己最初使用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簡單的幾種用法。其實很多方法,可以通過對象瀏覽器查看然后調用的。希望能對大家有點幫助。

 

 

=======================

使用SharpSvn方便調用svn

來源:https://blog.51cto.com/xiweicheng/923477

 需要調用svn去做一些操作時,有兩種方式:調用svn.exe命令行和調用svn api接口。我不太喜歡調用命令行的方式,是因為它需要依賴一個外部的exe程序,同時,為了得到命令執行結果,還需要去捕捉命令行的輸出控制台,然后去解析,使得不太可靠。因此,我選擇了調用svn接口的方式,因為我使用的是c#,有一個現成的第三方包裝的庫SharpSvn可以調用。

SharpSvn主頁:

http://sharpsvn.open.collab.net/

使用起來很簡單,下面是一個例子:

 

static void Main(string[] args)

{

    using (SvnClient client = new SvnClient())

    {

        SvnInfoEventArgs serverInfo;

        SvnInfoEventArgs clientInfo;

        SvnUriTarget repos = new SvnUriTarget("http://svn.test.com/demo");

        SvnPathTarget local = new SvnPathTarget(@"d:\Work\Code\demo");

 

        client.GetInfo(repos, out serverInfo);

        client.GetInfo(local, out clientInfo);

 

        string path = @"d:\Work\Code\Demo";

        client.CleanUp(path);

        client.Revert(path);

        client.Update(path);

 

        Console.WriteLine(string.Format("serverInfo revision of {0} is {1}", repos, serverInfo.Revision));

        Console.WriteLine(string.Format("clientInfo revision of {0} is {1}", local, clientInfo.Revision));

    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM