Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从Svn修订号中获取应用程序和分支机构名称?_C#_Sharpsvn - Fatal编程技术网

C# 如何从Svn修订号中获取应用程序和分支机构名称?

C# 如何从Svn修订号中获取应用程序和分支机构名称?,c#,sharpsvn,C#,Sharpsvn,嗨,你们这些聪明人 给定SubVersion存储库中任何应用程序的修订号,我如何(使用SharpSvn): 确定修订号标识的应用程序名称 确定它是主干修订版还是分支修订版 确定分支机构的名称(如果是分支机构修订版) 我的存储库是这样组织的: Application1 Trunk <Application files> Branches BranchName1 <Application files>

嗨,你们这些聪明人

给定SubVersion存储库中任何应用程序的修订号,我如何(使用SharpSvn):

  • 确定修订号标识的应用程序名称
  • 确定它是主干修订版还是分支修订版
  • 确定分支机构的名称(如果是分支机构修订版)
  • 我的存储库是这样组织的:

    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;
                }