我正在维护一个自制的基于 Web 的 CRM,我使用 Subversion 进行版本控制。我想要的是在导出到生产服务器后将修订号写入文件,以便出于调试原因将其显示在 CRM 的状态页面中。
有没有办法用命令行工具做到这一点?
我正在维护一个自制的基于 Web 的 CRM,我使用 Subversion 进行版本控制。我想要的是在导出到生产服务器后将修订号写入文件,以便出于调试原因将其显示在 CRM 的状态页面中。
有没有办法用命令行工具做到这一点?
从技术上讲,您在导出后无法确定,因为另一次提交可能发生在两者之间。实际上,您可以使用svn info <URL>
. 你当然可以做第svn info
一个,提取修订并导出该修订以确保两者一致。
如果您进行结帐而不是导出,则可以通过 获取信息svn info <path>
。
另一种方法是在一个导出的文件(我们称之为 script.h)中使用关键字,如下所示:
#define VERSION_STRING "r$Revision$"
// ... rest of the file
如果您将 svn:keywords 属性赋予文件(并提交),则 $Revision$ 将在结帐或导出时被替换:
svn propset svn:keywords "Revision" script.h
(还有其他替换,查看SVN 文档了解更多详细信息)
您可以使用关键字替换来始终将信息显示在文件中。
如果您使用 Ant 作为构建工具,您可以编写自定义 Ant 任务以从删除 Subversion 服务器获取信息,将它们存储到 Ant 项目的属性中,并使用替换将这些值放入某些属性/类中。
由于您肯定是从 Subversion 标记构建生产应用程序,因此您不会有显示错误信息的风险(如提到的 RegGlyph)