【发布时间】:2011-12-05 08:11:41
【问题描述】:
有没有办法以编程方式获取 TortoiseSVN 1.7 本地工作副本的当前修订号? 我想用它来设置我的软件安装程序的版本。
【问题讨论】:
标签: c# .net tortoisesvn
有没有办法以编程方式获取 TortoiseSVN 1.7 本地工作副本的当前修订号? 我想用它来设置我的软件安装程序的版本。
【问题讨论】:
标签: c# .net tortoisesvn
您可以使用 TSVN SubWCRev 命令行工具,而不是处理 svnversion 或 svn info 和解析结果,它允许使用(版本化)模板文件,其中一些与存储库相关的可变数据定义为 @987654322 @ 和你的构建工具(或者你,手动)只需要在你的 WC 上运行带有所需模板文件的 SubWCRev 并在结果文件中获取安装程序的版本信息
【讨论】:
请记住,Tortoise 只是 Subversion 项目的 UI 客户端。
Tortoise 客户端的 automatton 命令行有一个指南:Automating Tortoise from command line
如果还不够,只需安装 Internet 上可用的任何 Subversion 客户端,例如: SlikSvn,或者只是原始的一个和
移动到工作副本目录
从命令行svn info --xml > log.xml 运行后。您将在log.xml 中以 XML 格式提供所需的所有信息。
或者
只需运行svn info $WorkingCopyPath$ --xml > log.xml
希望对你有帮助
【讨论】:
TortoiseSVN 带有命令行工具svnversion.exe。
这个小小的工具只是打印出本地工作副本的修订号。
如果您没有指定工作副本目录,它会检查当前目录是否是工作副本(如果不是,则输出“导出”),如果是,则打印出修订号和标志 - 例如M 修改。
【讨论】:
您可以使用控制台工具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。
【讨论】:
经过一番研究,这对我来说是最简单的方法:
第二部分:
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 数据库中,因此无法从文章中提出的任何正则表达式中读取。
【讨论】: