2010-02-23 45 views
5

如何使用SharpSVN以編程方式將文件夾添加到忽略列表中?如何使用SharpSVN以編程方式爲文件夾添加忽略列表

編輯:嘗試:
這是我已經試過

svnClient.GetProperty(new SvnUriTarget("svn://svn.foo.com/" + DatabaseName + "/"), SvnPropertyNames.SvnIgnore, out ignores); 
ignores += " Artifacts"; 
var args = new SvnSetPropertyArgs() { BaseRevision = ???, LogMessage = "update ignore list" }; 
svnClient.SetProperty(new Uri("svn://svn.foo.com/" + DatabaseName + "/"), SvnPropertyNames.SvnIgnore, ignores, args); 

但我不知道如何讓BaseRevision(我可以手動得到它,而這樣的作品,但所有的的getProperty的組合我試過好像不把它給我)

解決方案:基於伯特的回答:

SvnGetPropertyArgs getArgs = new SvnGetPropertyArgs(){}; 
string ignores = "Artifacts"; 
string result; 
if(svnClient.GetProperty(new SvnUriTarget("svn://svn.foo.com/" + ProjectName + "/trunk/"), SvnPropertyNames.SvnIgnore,out result)) 
{ 
    ignores = result + " Artifacts"; //TODO: check for existing & tidy formatting. 
} 
svnClient.SetProperty(UncPath.TrimEnd('\\'), SvnPropertyNames.SvnIgnore, ignores); 
SvnCommit(svnClient); 
+0

您應該只檢索並設置本地工作副本的屬性,然後將更改提交到存儲庫。 (要做到這一點,只需用本地路徑替換UriTarget)。 – 2010-03-02 12:26:50

+0

沒有真正的相關性(因爲本地路徑更容易):但是不是直接使用SvnUriTarget類,而是直接使用正常的System.Uri實例。對於string-> SvnPathTarget和Uri-> SvnUriTarget定義了自動轉換。 – 2010-03-02 12:27:58

回答

4

忽略列表存儲在包含要忽略的文件/目錄的父目錄的'svn:ignores'屬性中。 (請參閱Subversion booksvn help propset

所以要添加一個項目,您必須獲取原始屬性值(如果存在),然後添加用空格分隔的額外項目。 SvnClient的功能是GetProperty和SetProperty()。

+0

這是有幫助的,但我仍然錯過了一些細節讓它工作(請參閱編輯的問題) – Myster 2010-03-02 03:31:34

+0

我沒有本地路徑,我有一個UNC路徑。如果我這樣稱呼'SetProperty':svnClient.SetProperty(「\\\\ dev1 \\ www \\ www.automan.foo.com \\」,「svn:ignore」,「Artifacts」);我得到的例外:「'\\ dev1 \\ www'不是一個工作副本」 – Myster 2010-03-11 22:47:09

+0

不是100%確定,但我認爲這表明www.automan.foo.com文件也不是工作副本(可能不是一個目錄),你只能在工作副本目錄中設置svn:ignore屬性。 – 2010-03-12 09:47:13

相關問題