我想在一些版本化的非代码级文件中包含一些元数据,特别是文件的修订版ID。如果可能的话,我想配置一个特定的目录,这样无论何时签入文件,where (table1.Field<string>(3) == "1") == table2.Field<bool>(3)
服务器都会获取新的修订版号并附加
/ * rev:$ revNo * /
到文件的末尾。问题是,处理这些版本化文件的脚本想要知道文件的修订版本并读取文件中的最后一行,该文件以不会破坏文件其余部分的格式输入&# 39; s语义,比使用某些svn API检查文件修订版甚至调用针对该版本化对象的系统级svn命令更容易。
有没有办法自动执行此任务?
答案 0 :(得分:2)
不确定是否可以在服务器端完成此操作。我认为它可以。服务器需要pre-commit hook才能执行操作。这可能是特定于服务器的。在VisualSVN中,您可以编写一个power-shell脚本,该脚本称为预提交,具有以下有序参数:
[1] REPOS-PATH
[2] REV
[3] TXN-NAME.
我认为您可以使用这些参数将该信息附加到版本化文件。我只是不确定是否会触发另一次提交,触发另一个预提交挂钩。
你绝对可以在客户端做类似的事情。我使用SubWCRev。它是TortoiseSVN的一部分,它使用命令行界面来获取SVN参数。
使用文件: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
脚本。