包括 C 源代码中项目的 SVN 修订版



如何在C源代码或Makefile中包含项目的SVN修订版(不是文件修订版)?

我们在 makefile 中使用这样的一行:

REPO_REV := $(shell svnversion -n)

将工作副本的修订号存储到 make 变量中。 要在 C 代码中使用它,您可以让 makefile 使用该值在编译器命令行上定义宏(类似于 gcc 的 -DREPO_REV=$(REPO_REV))。

来自SVN书:

新用户经常对$Rev$关键字的工作方式感到困惑。由于存储库具有单个全局递增的修订号,因此许多人认为 $Rev$ 关键字的值反映的正是此编号。但$Rev$会展开以显示文件更改的最后一个修订版本,而不是更新到的最后一个修订版本。理解这一点可以消除混乱,但挫折感往往仍然存在 — 如果没有 Subversion 关键字的支持,您如何自动将全局修订号放入您的文件中?

为此,您需要外部处理。Subversion 附带了一个名为 svnversion 的工具,它就是为此目的而设计的。它会抓取您的工作副本并生成它找到的修订版作为输出。您可以使用此程序以及一些其他工具将该修订信息嵌入到文件中。有关svnversion的更多信息,请参见第 9 章 Subversion 完整参考中的"svnversion—Subversion 工作副本版本信息"一节。

最新更新