问题提出:
我们在用svn管理代码时候,有时候我们需要在java代码里添加上该文件的版本信息、最后修改日期、最后修改用户等信息。
而这个又不能每次把文件提交到svn上时,更改这些信息。
解决方法:
幸好svn有一个自动属性的功能,即给给该文件添加一些属性,比如svn:keywords,添加该文件的关键字,这样在该文件内容里就会识别该关键字,而把关键字的地方替换成svn服务器上的相应属性。
比如:
- 我现在在svn控制目录下创建一个文件”自动属性.txt”
- 往里面添加内容为:
txt代码
- $Id$
- $Date$
- 把该文件添加到svn版本控制中(add,commit),此时txt中的内容还是:
txt代码
- $Id$
- $Date$
- 点击自动属性.txt的属性 ,弹出属性的对话框。在subversion选项卡上选择properties,添加一个svn:keywords属性:LastChangedDate LastChangedRevision
Id Date 各属性之间用空格隔开。 - 把“自动属性.txt”再commit到服务上去,这时“自动属性.txt”的文件内容就添加了svn服务器上的相应属性(注“自动属性.txt”的的编码必须为utf-8,否则中文会出现乱码):
txt代码
- $Id: 自动属性.txt 2543 2007-12-28 06:52:06Z chen_xk $
- $Date: 2007-12-28 14:52:06 +0800 (星期五, 28 十二月 2007) $
- 但是这样必须每次要往svn服务器添加一个文件时,都要设置该文件的属性,有没有一个全部设置的方法,后来终于发现在一个方法: 修改C:\Documents and Settings\Administrator\Application Data\Subversion\config文件,Administrator是windows用户名,添加(注:#表示注释,该把#去掉):
txt代码
- enable-auto-props = yes
- [auto-props]
- *.php = svn:keywords=Date Rev Id
- *.txt = svn:keywords=LastChangedDate LastChangedRevision
- 这样就大功告成。