1

我在我的 Windows Box 上使用 Visual SVN。

我有 Repository Application,它有Framework一个 svn:external。一切都很好。

当我结帐时Application,我希望将 和 的版本Application包含Framework在页脚文件中。这样我可以有类似的东西:

Application Version $ApplicationVersion$, Framework Version $FrameworkVersion$

通常,我知道我可以使用 svn:keywords 并添加修订版 - 但据我了解,svn:keywords 适用于每个文件。一些网站建议使用svnversion来为每个变量生成输出,但我不完全确定如何去做。

再一次,在 Windows Box 上,使用 VisualSVN。我还使用 Versions.app 在 Mac 上开发,如果它提供了一个更熟悉的界面供人们回答:)

编辑- 我的应用程序是 PHP Web 应用程序。因此,没有编译。

谢谢!

4

1 回答 1

4

要使用 svnversion,您需要将其集成到构建过程中。如果你在 subversion checkout 上运行它,它会输出一个类似 的字符串73597:73598,指示你的树的版本(注意不同的文件可能有不同的版本,另外文件也可能有本地修改)。你把类似的东西

CFLAGS+=-DSVNVERSION="\"`svnversion`\""  

进入你的 Makefile,然后把

#define VERSION_STRING "Application version" SVNVERSION ", Framework version" FRAMEWORK_VERSION

进入代码。如果你不使用 Make,或者不能让你的构建过程运行一个命令,它的输出会产生一个编译器命令行选项,那么你也可以使用 TortoiseSVN 附带的 subwcrev 实用程序。您将其用作预构建步骤,并让它将一些带有占位符的文件转换为文件的副本,并将占位符替换为实际版本;然后您的编译将编译并链接新文件。

编辑:对于 PHP 案例,不可能在结帐或更新时自动将修订写入文件。相反,您可以在每次 PHP 访问时运行 svnversion,将其输出放入 HTML 响应中。如果这变得太昂贵,您可以将 svnversion 结果缓存在一个文件中,并且仅在文件超过一小时(例如)时才重新生成文件,让用户记住在更新后删除文件以使其重新计算立即缓存。

于 2009-07-09T18:53:46.533 回答