svn 的属性功能支持在 checkout 或 update 时自动替换 $id$、$revision$、$date$ 等关键字,需设置 svn:keywords 属性并确保文件中关键字格式为 $keyword$,替换仅发生在已提交属性且文件受版本控制的文本文件中。

SVN 的属性(Properties)功能支持在代码检出(checkout)或更新(update)时自动替换特定关键字,比如 $Id$、$Revision$、$Date$ 等。这依赖于 svn:keywords 属性的设置,且需配合源文件中正确的关键字格式才能生效。
确保文件中包含合法的关键字占位符
SVN 只会对文件中以 $keyword$ 形式出现的字符串进行替换(注意前后必须是美元符 + 大写字母组成的关键词 + 美元符)。常见支持的关键字有:
-
$Id$→ 替换为类似$Id: filename.ext 12345 username 2024-03-10 15:22:34 +0800 (Sun, 10 Mar 2024) $ -
$Revision$→ 替换为修订号,如$Revision: 12345 $ -
$Date$→ 替换为最后提交时间,如$Date: 2024-03-10 15:22:34 +0800 (Sun, 10 Mar 2024) $ -
$Author$→ 替换为提交者用户名 -
$HeadURL$→ 替换为该文件在仓库中的 URL
注意:这些字符串必须原样写在文件里(例如 C 文件头部加 /* $Id$ */),不能带空格或换行破坏格式,否则 SVN 不识别。
为文件设置 svn:keywords 属性
仅写入关键字占位符还不够,必须显式启用对应的关键字替换功能。使用 svn propset 命令设置 svn:keywords 属性:
- 启用单个关键字:
svn propset svn:keywords "Id" filename.c - 启用多个关键字:
svn propset svn:keywords "Id Revision Date Author" filename.c - 对整个目录递归设置(如所有 .c 和 .h 文件):
svn propset svn:keywords "Id Revision" --recursive src/
设置后需执行 svn commit 提交属性变更,后续检出或更新才会生效。
《SVN视频教程》,SVN:全称Subversion,是代码版本管理软件,管理着随时间改变的数据。这些数据放置在一个中央资料档案库 (repository) 中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本, 或是浏览文件的变动历史。许多人会把版本控制系統想像成某种“时光机器”。
检出或更新后关键字才会被替换
关键字替换只发生在工作副本的本地文件中,且仅在以下操作时触发:
- 首次
svn checkout该文件时 - 执行
svn update获取新版本时(前提是该文件在仓库中有更新) - 不会在本地修改后自动更新 —— 修改保存后关键字仍保持旧值,直到下次 update 或 checkout
因此,若想看到最新修订信息,必须确保已从仓库拉取最新版本,而非仅靠本地编辑触发替换。
验证与调试技巧
如果关键字未被替换,可按顺序排查:
- 用
svn proplist filename检查是否设置了svn:keywords - 用
svn propget svn:keywords filename查看具体启用了哪些关键字 - 确认文件中关键字写法完全匹配(大小写、美元符、无多余空格)
- 检查该文件是否已纳入版本控制(未 add 的文件不参与属性处理)
- 尝试
svn revert filename再svn update强制刷新
注意:二进制文件(如图片、PDF)默认不支持关键字替换;若需对这类文件启用,还需额外设置 svn:mime-type 为文本类型(不推荐,易出错)。










