我正在尝试使用 SharpSvn 获取存储库的所有分支,但我找不到任何方法可以做到这一点。
是否可以使用 SharpSvn 获取所有分支?
我认为 Matt Z 走在了正确的轨道上,但该代码无法编译。这是一个调整后的版本,应该适用于最新版本的 SharpSVN(截至 2015 年 12 月)。
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using SharpSvn;
....
private List<string> GetSVNPaths()
{
List<string> files = new List<string>();
using (SvnClient svnClient = new SvnClient())
{
Collection<SvnListEventArgs> contents;
//you can get the url from the TortoiseSVN repo-browser if you aren't sure
if (svnClient.GetList(new Uri(@"https://your-repository-url/"), out contents))
{
files.AddRange(contents.Select(item => item.Path));
}
}
return files;
}
SharpSvn.SvnClient 类有一个运行良好的 GetList() 函数:
using (SvnClient svnClient = new SvnClient())
{
Collection contents;
List files = new List();
if (svnClient.GetList(new Uri(svnUrl), out contents))
{
foreach(SvnListEventArgs item in contents)
{
files.Add(item.Path);
}
}
}
获得集合后,您可以获取该位置每个项目的路径。您还可以使用 Entry 对象来获取有关每个项目的信息,包括它是目录还是文件,上次修改时间等。
我对 SharpSVN 一无所知,但 Subversion 中的分支只是目录树——它们没有什么特别之处。
如果您的存储库遵循具有三个顶级目录(trunk/branches/tags/)的典型布局,您可以查看 /branches 目录以并排获取所有分支。