如何通过编程方式获得TortoiseSVN 1.7.x版本?

时间:2011-12-05 08:11:41

标签: c# .net tortoisesvn

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

5 个答案:

答案 0 :(得分:4)

不要重新发明轮子!

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

答案 1 :(得分:3)

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

从命令行有一个Tortoise客户端自动机的指南:Automating Tortoise from command line

如果还不够,只需安装互联网上提供的任何Subversion客户端,例如: SlikSvn,或只是原创的

  1. 转到工作副本目录

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

    或者

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

  3. 希望这有帮助

答案 2 :(得分:2)

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

答案 3 :(得分:1)

您可以使用控制台工具 SubWCRev.exe directry获取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中。

答案 4 :(得分:1)

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

  1. 在C#中,运行SubWCRev.exe(与Tortoise SVN一起安装)
  2. 从输出中读取修订号
  3. 第1部分:见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数据库中,因此无法从文章中提出的任何正则表达式中读取。