当前位置:  开发笔记 > 编程语言 > 正文

如何访问当前的Subversion内部版本号?

如何解决《如何访问当前的Subversion内部版本号?》经验,为你挑选了7个好方法。

如何在subversion中自动导入最新的构建/修订号?

我们的目标是让您的网页页脚上的数字显示为SO.



1> Charles Duff..:

让构建过程调用svnversion命令,并将其输出嵌入到生成的{source | binaries}中.这不仅会给出当前版本(这里有许多其他示例),但是它的输出字符串还将告诉构建是在混合树还是树中完成,这与所讨论的版本号不完全匹配(即一棵有局部变化的树.

使用标准树:

$ svnversion
3846

使用修改后的树:

$ echo 'foo' >> project-ext.dtd
$ svnversion                   
3846M

使用混合修订,修改后的树:

$ (cd doc; svn up >/dev/null 2>/dev/null)
$ svnversion
3846:4182M



2> Sam Stokes..:

svnversion命令是执行此操作的正确方法.如果您的工作副本混合,它会输出您的整个工作副本所在的修订号,或者输出一系列修订版(例如,某些目录是最新的,而某些目录不是).它还将指示工作副本是否具有本地修改.例如,在一个相当不干净的工作目录中:

$ svnversion
662:738M

$ Revision $关键字不能达到您想要的效果:它仅在包含文件时才会更改.Subversion书提供了更多细节."svn info"命令也不能执行您想要的操作,因为它只会告诉您当前目录的状态,而忽略任何子目录的状态.在与前一个示例相同的工作树中,我有一些比我所在的目录更新的子目录,但是"svn info"没有注意到:

$ svn info
... snip ...
Revision: 662

将svnversion合并到构建过程中很容易,因此每个构建都以一些运行时可访问的形式获取修订号.例如,对于Java项目,我让makefile将svnversion输出转储到.properties文件中.



3> Michael Stum..:
svn info 

要么

svn info --xml 

然后看看结果.对于xml,对存储库的修订版本的parse/info/entry/@ revision(本例中为151)或/ info/entry/commit/@对于此路径的最后一次提交的修订版本(133,在使用时很有用)标签):




http://myserver/svn/stumde/cmdtools

http://myserver/svn/stumde
a148ce7d-da11-c240-b47f-6810ff02934c


mstum
2008-07-12T17:09:08.315246Z



我为自己编写了一个工具(cmdnetsvnrev,包含源代码),它取代了AssemblyInfo.cs文件中的Revision.但它仅限于此目的,但通常svn信息然后处理是要走的路.



4> Bob Nadler..:

将svn:keywords添加到源文件的SVN属性中:

svn:keywords Revision

然后在源文件中包含:

private const string REVISION = "$Revision$";

修订版将在下次提交时使用修订号更新(例如)"$Revision: 4455$".您可以解析此字符串以仅提取修订号.



5> Brian R. Bon..:

如果你有陆龟SVN,你可以使用SubWCRev.exe

创建一个名为的文件:

RevisionInfo.tmpl

SvnRevision = $WCREV$;

然后执行以下命令:

SubWCRev.exe . RevisionInfo.tmpl RevisionInfo.txt

它将使用您的修订号创建一个ReivisonInfo.txt文件,如下所示:

SvnRevision = 5000;

但是,您可以使用所需的任何源文件,而不是使用.txt,并且可以访问源代码中的reivsion编号.



6> Chris Conway..:

您没有说明您正在使用的编程语言/框架.以下是使用PySVN在Python中执行此操作的方法

import pysvn
repo = REPOSITORY_LOCATION
rev = pysvn.Revision( pysvn.opt_revision_kind.head )
client = pysvn.Client()
info = client.info2(repo,revision=rev,recurse=False)
revno = info[0][1].rev.number # revision number as an integer



7> Bert Huijben..:

使用c#和SharpSvn(来自http://sharpsvn.net)代码将是:

//using SharpSvn;
long revision = -1;
using(SvnClient client = new SvnClient())
{
  client.Info(path,
    delegate(object sender, SvnInfoEventArgs e)
    {
       revision = e.Revision;
    });
}

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有