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

时间:2017-06-29 20:49:34

标签: c# sharpsvn

大家好聪明!

鉴于我的SubVersion存储库中任何应用程序的版本号,我如何(使用SharpSvn):

  1. 确定修订号识别的应用程序名称
  2. 确定它是 trunk 还是分支版本?
  3. 确定分支的名称(如果是分支修订版)?
  4. 我的存储库以这种方式组织:

    Application1
        Trunk
            <Application files>
        Branches
            BranchName1
                <Application files> 
            BranchName2
                <Application files>
            ...
    Application2
        Trunk
            <Application files>
        Branches
            BranchName1
                <Application files> 
            BranchName2
                <Application files>
            ...
    

    我想我应该以某种方式检索使用该特定修订号更改的文件集,然后查看Svn文件路径?

    可以完成吗?

1 个答案:

答案 0 :(得分:1)

在SVN中,修订号对整个存储库是全局的,因此没有“主干修订版”。但是,您可以采取哪些措施来确定哪些路径受到修订的影响,运行类似于svn log -r<REV> --verbose

在SharpSvn中有方法SvnClient.LogMethod(Uri, SvnLogArgs, EventHandler<SvnLogEventArgs>),它允许您指定可用于确定受影响路径的EventHandler和SvnClient.GetLog(Uri, SvnLogArgs, out Collection<SvnLogEventArgs>),它为您提供了可用于记录的日志消息的集合找出受影响的路径。

http://docs.sharpsvn.net/current/html/M_SharpSvn_SvnClient_Log_4.htm

小例子(GetLog()):

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