【问题标题】:How to get TortoiseSVN 1.7.x revision programmatically?如何以编程方式获取 TortoiseSVN 1.7.x 修订版?
【发布时间】:2011-12-05 08:11:41
【问题描述】:

有没有办法以编程方式获取 TortoiseSVN 1.7 本地工作副本的当前修订号? 我想用它来设置我的软件安装程序的版本。

【问题讨论】:

    标签: c# .net tortoisesvn


    【解决方案1】:

    不要重新发明轮子!

    您可以使用 TSVN SubWCRev 命令行工具,而不是处理 svnversion 或 svn info 和解析结果,它允许使用(版本化)模板文件,其中一些与存储库相关的可变数据定义为 @987654322 @ 和你的构建工具(或者你,手动)只需要在你的 WC 上运行带有所需模板文件的 SubWCRev 并在结果文件中获取安装程序的版本信息

    【讨论】:

      【解决方案2】:

      请记住,Tortoise 只是 Subversion 项目的 UI 客户端。

      Tortoise 客户端的 automatton 命令行有一个指南:Automating Tortoise from command line

      如果还不够,只需安装 Internet 上可用的任何 Subversion 客户端,例如: SlikSvn,或者只是原始的一个和

      1. 移动到工作副本目录

      2. 从命令行svn info --xml > log.xml 运行后。您将在log.xml 中以 XML 格式提供所需的所有信息。

        或者

        只需运行svn info $WorkingCopyPath$ --xml > log.xml

      希望对你有帮助

      【讨论】:

      • 最新版本的 Tortoise 在安装程序中包含了一个复选框,可以同时安装命令行版本的 svn,非常有用。
      【解决方案3】:

      TortoiseSVN 带有命令行工具svnversion.exe。 这个小小的工具只是打印出本地工作副本的修订号。 如果您没有指定工作副本目录,它会检查当前目录是否是工作副本(如果不是,则输出“导出”),如果是,则打印出修订号和标志 - 例如M 修改

      【讨论】:

        【解决方案4】:

        您可以使用控制台工具SubWCRev.exe 目录获取 svn 信息:(在 Visual Studio 项目中使用 Subversion 修订号)[http://www.codeproject.com/KB/architecture/ svn_visual_studio.aspx].

        获取 svn 信息的另一种方法是使用(MSBuild 社区任务)[http://msbuildtasks.tigris.org/] 中提供的特殊 msbuild 任务。例如,您可以在每次构建项目时使用新数据更新 AssemlyInfo 文件。查看这篇文章:Insert SVN version and Build number in your C# AssemblyInfo file

        例如,稍后您可以将您的 AssemblyInfo 数据嵌入到 wix 项目 How to insert an assembly version number into a WiX script at build time

        【讨论】:

          【解决方案5】:

          经过一番研究,这对我来说是最简单的方法:

          1. 在 C# 中,运行 SubWCRev.exe(随 Tortoise SVN 一起安装)
          2. 从其输出中读取修订号

          第一部分:见http://blogs.msdn.com/b/ericwhite/archive/2008/08/07/running-an-executable-and-collecting-the-output.aspx

          第二部分:

          string exe = @"C:\Program Files\TortoiseSVN\bin\SubWCRev.exe";
          string projectPath = @"C:\MyProject";
          RunResults runResults = Program.RunExecutable(exe, projectPath, projectPath);
          string lines = runResults.Output.ToString();
          
          Regex regex = new Regex(@"\D*Updated to revision ([0-9]+)\D*");
          
          Match match = regex.Match(lines);
          int revision = -1;
          if (match.Success)
          {
              revision = int.Parse(match.Groups[1].Value);
          }
          

          不知道这是否是最好的解决方案。对我来说,这是最简单的。我试过http://netpl.blogspot.de/2011/10/reading-revision-number-of-local-copy.html 没有用。 svn 版本不包含在我的 Sqlite 数据库中,因此无法从文章中提出的任何正则表达式中读取。

          【讨论】:

            猜你喜欢
            • 2022-12-17
            • 2014-04-09
            • 1970-01-01
            • 2011-03-16
            • 2010-09-08
            • 1970-01-01
            • 2021-08-20
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多