C# 如何从Svn修订号中获取应用程序和分支机构名称?
嗨,你们这些聪明人 给定SubVersion存储库中任何应用程序的修订号,我如何(使用SharpSvn):C# 如何从Svn修订号中获取应用程序和分支机构名称?,c#,sharpsvn,C#,Sharpsvn,嗨,你们这些聪明人 给定SubVersion存储库中任何应用程序的修订号,我如何(使用SharpSvn): 确定修订号标识的应用程序名称 确定它是主干修订版还是分支修订版 确定分支机构的名称(如果是分支机构修订版) 我的存储库是这样组织的: Application1 Trunk <Application files> Branches BranchName1 <Application files>
Application1
Trunk
<Application files>
Branches
BranchName1
<Application files>
BranchName2
<Application files>
...
Application2
Trunk
<Application files>
Branches
BranchName1
<Application files>
BranchName2
<Application files>
...
Application1
大旅行箱
分支机构
BranchName1
BranchName2
...
应用程序2
大旅行箱
分支机构
BranchName1
BranchName2
...
我想我应该以某种方式检索使用特定修订号更改的文件集,然后查看Svn文件路径
完全可以吗?在SVN中,修订号对于整个存储库是全局的,因此没有“主干修订”。但是,要确定哪些路径受到修订的影响,可以运行类似于
svnlog-r--verbose的程序
在SharpSvn中有方法SvnClient.LogMethod(Uri,SvnLogArgs,EventHandler)
,它允许您指定一个事件处理程序,用于找出受影响的路径和SvnClient.GetLog(Uri,SvnLogArgs,out集合)
它为您提供了一组日志消息,您可以使用这些消息找出受影响的路径
小示例(使用GetLog()
):
使用(var client=new SvnClient())
{
SvnLogArgs logArgs=新的SvnLogArgs();
收集日志结果;
if(client.GetLog(新Uri(“RepositoryUri”)、logArgs、out logResults))
{
foreach(logResults中的var logResult)
{
if(logResult.ChangedPaths.Contains(“searchedPath”))
{
//对这些信息做点什么
}
}
}
返回;
}
您可以通过为OP和未来用户添加一个简单的示例来改进答案。你的答案应该是独立的,这样如果你指向的链接消失了,你的答案仍然有用。
using (var client = new SvnClient())
{
SvnLogArgs logArgs = new SvnLogArgs();
Collection<SvnLogEventArgs> logResults;
if (client.GetLog(new Uri("RepositoryUri"), logArgs, out logResults))
{
foreach (var logResult in logResults)
{
if (logResult.ChangedPaths.Contains("searchedPath"))
{
// do something with the information
}
}
}
return;
}