有没有办法以编程方式获取TortoiseSVN 1.7本地工作副本的当前版本号? 我想用它来设置我的软件安装程序的版本。
答案 0 :(得分:4)
您没有处理svnversion或svn信息以及解析结果,而是使用TSVN SubWCRev命令行工具,它允许使用(版本化的)模板文件,其中一些可更改的存储库相关数据被定义为SubWCRev-keywords和您的构建工具(或者您手动)只需在WC上运行带有所需模板文件的SubWCRev,并在结果文件中获取安装程序的versioninfo
答案 1 :(得分:3)
请记住,Tortoise不是Subversion项目的UI客户端。
从命令行有一个Tortoise客户端自动机的指南:Automating Tortoise from command line
如果还不够,只需安装互联网上提供的任何Subversion客户端,例如: SlikSvn,或只是原创的
转到工作副本目录
从命令行svn info --xml > log.xml
运行后。您将在log.xml
中以XML格式获得所需的所有信息。
或者
只需运行svn info $WorkingCopyPath$ --xml > log.xml
希望这有帮助
答案 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)
第二部分:
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数据库中,因此无法从文章中提出的任何正则表达式中读取。