Subversion 的 svn:keywords 是一个非常有用的功能,可以让你将发生在源代码中的一些属性的变化自动地更新到源代码中。
比如你可以在客齐集社区的每一个页面的底部都看到的这样的一行字。
$Id: V2EXCore.php 4 2005-10-29 23:08:09Z livid $
这行字的意思是表示,V2EXCore.php 这个源代码文件最后被用户 livid 更新于 2005-10-29 23:08:09Z,修订版本号为 4。要实现这样的自动更新,你只要对需要这样的属性的文件上使用下面这行指令。
svn propset svn:keywords "Id" V2EXCore.php
然后在源代码文件中需要 Subversion 进行自动更新的地方插入 $Id$ 这样的 Keyword,那么在你下次进行 svn commit 之后,该 $Id$ 就会被 Subversion 自动替换为 $Id: V2EXCore.php 4 2005-10-29 23:08:09Z livid $ 这样的格式。
Subversion 中可以使用的 Keyword 包括下面这些。
* Id
这是一种综合的格式,例如“$Id: V2EXCore.php 4 2005-10-29 23:08:09Z livid $”。
* LastChangedDate
最后被修改的时间,这个属性也可以缩写为 Date。
* LastChangedBy
最后修改该源代码文件的用户名,这个属性也可以被缩写为 Author。
* LastChangedRevision
最后修订的版本号,这个属性也可以被缩写为 Revision 或者 Rev。
* HeadURL
该源代码文件所位于的 Repository 上的绝对 URL 地址,这个属性也可以被缩写为 URL。
Subversion 只会对你明确设置了 Keyword 进行更新,比如如果你对某个源代码文件执行了下面这条指令。
svn propset svn:keywords "Id Date" V2EXCore.php
则在 V2EXCore.php 中所有的 $Id$ 和 $Date$ 都会被替换,而 $Author$ 之类的没有被设置的属性则不会发生替换。
关于 svn propset 指令方面的更多信息,你可以看下面这个网站中的资料。
http://lividot.org/man/subversion/ch07s02.html#svn-ch-7-sect-2.3.4
使用subversion时,commit是不能自动替换相应的keywords,如Id、Author等。
解决办法:
1、对svn add和svn import进来的代码,可以修改~/.subversion/config文件,把enable-auto-props设置为yes,并修改auto-props节部分的内容,把你想要实现的代码类型添加进去:
*.php=svn:keywords:Id
这样就可以在PHP文件中使用Id关键字来替换相应信息。
2、对已经在库中的代码,可以使用如下命令:
svn propset svn:keywords “Id” yourcode.php
然后再进行commit时就可以自动处理了。
比如你可以在客齐集社区的每一个页面的底部都看到的这样的一行字。
$Id: V2EXCore.php 4 2005-10-29 23:08:09Z livid $
这行字的意思是表示,V2EXCore.php 这个源代码文件最后被用户 livid 更新于 2005-10-29 23:08:09Z,修订版本号为 4。要实现这样的自动更新,你只要对需要这样的属性的文件上使用下面这行指令。
svn propset svn:keywords "Id" V2EXCore.php
然后在源代码文件中需要 Subversion 进行自动更新的地方插入 $Id$ 这样的 Keyword,那么在你下次进行 svn commit 之后,该 $Id$ 就会被 Subversion 自动替换为 $Id: V2EXCore.php 4 2005-10-29 23:08:09Z livid $ 这样的格式。
Subversion 中可以使用的 Keyword 包括下面这些。
* Id
这是一种综合的格式,例如“$Id: V2EXCore.php 4 2005-10-29 23:08:09Z livid $”。
* LastChangedDate
最后被修改的时间,这个属性也可以缩写为 Date。
* LastChangedBy
最后修改该源代码文件的用户名,这个属性也可以被缩写为 Author。
* LastChangedRevision
最后修订的版本号,这个属性也可以被缩写为 Revision 或者 Rev。
* HeadURL
该源代码文件所位于的 Repository 上的绝对 URL 地址,这个属性也可以被缩写为 URL。
Subversion 只会对你明确设置了 Keyword 进行更新,比如如果你对某个源代码文件执行了下面这条指令。
svn propset svn:keywords "Id Date" V2EXCore.php
则在 V2EXCore.php 中所有的 $Id$ 和 $Date$ 都会被替换,而 $Author$ 之类的没有被设置的属性则不会发生替换。
关于 svn propset 指令方面的更多信息,你可以看下面这个网站中的资料。
http://lividot.org/man/subversion/ch07s02.html#svn-ch-7-sect-2.3.4
使用subversion时,commit是不能自动替换相应的keywords,如Id、Author等。
解决办法:
1、对svn add和svn import进来的代码,可以修改~/.subversion/config文件,把enable-auto-props设置为yes,并修改auto-props节部分的内容,把你想要实现的代码类型添加进去:
*.php=svn:keywords:Id
这样就可以在PHP文件中使用Id关键字来替换相应信息。
2、对已经在库中的代码,可以使用如下命令:
svn propset svn:keywords “Id” yourcode.php
然后再进行commit时就可以自动处理了。