2017-06-14 101 views
1

我想在一些版本化的非代码级文件中包含一些元数据,尤其是文件的修订版本号。如果可能的话,我想配置特定的目录,以便当文件被选中的,在subversion服务器采用新的版本号和追加Subversion可以追加修订版本号到档案吗?

/*转:$ revNo */

到文件的末尾。问题是,处理这些版本化文件的脚本想知道文件的修订版本是什么,读取文件中的最后一行(输入的格式不会破坏文件的其他语义)比使用一些svn API检查文件修订版甚至针对该版本化对象调用系统级svn命令更容易。

有没有一种方法来自动执行此任务?

+2

为什么downvote? – amphibient

回答

2

服务器

不知道这是否可以在服务器端完成。我认为它可以。服务器需要一个pre-commit hook来执行操作。这可能是服务器特定的。用下面的命令参数在VisualSVN,你可以写一个脚本power-shell被称为预提交:

[1] REPOS-PATH 
[2] REV 
[3] TXN-NAME. 

认为你可以用这些参数来的信息附加到一个版本控制的文件。我只是不确定是否会触发另一个提交,触发另一个提交前钩子。

客户

你绝对可以做在客户端类似的东西。我使用SubWCRev。它是使用命令行界面获取SVN参数的TortoiseSVN的一部分。

文件里:SubWC.h.in:

#define SVNREV "$WCREV$" 
#define SVNMOD "$WCMODS?Modified:Not modified$"; 
#define SVNVER "$WCUNVER?Unversioned items found:no unversioned items$"; 

然后,如果你一个预生成事件期间运行SubWCRev.exe . SubWC.h.in SubWC.h,你会得到一个自动生成的头:

#define SVNREV "2345" 
#define SVNMOD "Modified" 
#define SVNVER "Unversioned items found" 

您可以使用#include该标题将版本信息嵌入到应用程序中。

对此here有个很好的解释。它不会为您生成的文件生成版本,但您可以在同一个预生成脚本中编写脚本svn ci

+0

我建议不要通过钩子脚本来做到这一点 - 不要通过钩子脚本修改事务和修订。但是,在某些未版本控制的属性(如customprop:name = MyIDNumber)的形式中附加自定义ID可能会在某些情况下起作用,这可能就足够了。 – bahrep

相关问题