代码之家  ›  专栏  ›  技术社区  ›  Mithaldu

如何在SVN存储库的目录中标记文件,并在实际文件中显示全局版本号?

  •  3
  • Mithaldu  · 技术社区  · 16 年前

    我正在开发一个项目,该项目将多个版本存储在同一个SVN报告中,但存储在不同的目录中。为了便于项目的编码人员参考,我希望能够添加一个注释标签,类似于

    # $Revision: 144 $
    

    但是,它应该包含一个简单的版本号,而不是文件修订,比如:

    # $Version: 1.63 $
    # $Version: 1.64 $
    # $Version: 2.0 $
    

    是否有一种方法可以让Subversion为特定目录和所有子目录以及添加到这些目录的任何新文件自动执行此操作?

    3 回复  |  直到 16 年前
        1
  •  6
  •   Michael Hackner    16 年前

    将多个版本存储在同一个SVN报告中,但存储在不同的目录中

    听起来很可疑 tagging 如SVN文档中所述。你能改成这样吗?

    SVN将自动跟踪所有文件来自哪个版本,因此您不必在文件中嵌入任何内容。

        2
  •  0
  •   Ether    16 年前

    听起来好像您想根据Perl模块上次修订的时间来更改它的版本号,例如。

    our $VERSION = '1.2.12345';
    

    …其中12345是最后更改模块的SVN版本号。

    你可以使用 $Revision$ 要执行此操作,请在代码中使用关键字,再加上一点Perl替换魔力来提取整数:

    package My::Module;
    my $revision_str = '$Revision$';    # will be transformed to '$Revision: xxxxx $'
    (our $VERSION = $revision_str) =~ s/^\$Revision: (\d+) \$$/1.2.$1/;
    
     $ svn propset svn:keywords "Revision" My/Module.pm  
     property 'svn:keywords' set on 'My/Module.pm'  
     $ svn commit My/Module.pm -m'adding svn:keywords property'
     Committed revision 12345.
    
     $ perl -I. -MMy::Module -wle'print $My::Module::VERSION'  
     1.2.12345
    

    (参见以下文件 "Special Keywords" 有关svn:keywords属性的详细信息。)

        3
  •  0
  •   brian d foy    16 年前

    可以使用propedit添加任意属性,例如:

    svn propedit my:version path/to/dir`
    

    但是,我不知道如何在 co commit . (它甚至可能神奇地发生——我从未尝试过)。