【发布时间】:2011-01-19 21:49:09
【问题描述】:
如何使用 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 组合似乎都没有提供给我。)
解决方案:基于 Bert 的回答
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);
【问题讨论】:
-
您应该在本地工作副本上检索并设置属性,然后将更改提交到存储库。 (为此,只需将 UriTarget 替换为本地路径)。
-
不相关(因为本地路径更容易):但您可以传递一个普通的 System.Uri 实例,而不是直接使用 SvnUriTarget 类。定义了 string->SvnPathTarget 和 Uri->SvnUriTarget 的自动转换。