使用svn:keywords提高开发效率

用过康盛Discuz论坛系统的人可能都对下面一段话很熟悉

话说康盛Discuz! X 的版权声明越来越牛逼了 从SVN检出的文件,版权声明 都到2099年了

其中 $Id: admin.php 245 2011-08-17 06:55:59Z [email protected] $一行存储的信息分别是文件名,Revision,最后一次保存日期和时间(0时区),作者。这些时间依靠手工输入是不现实的,可以通过IDE的文件模板功能+svn:keyword实现。
首先配置SVN客户端,windows用户打开

%APPDATA%\Subversion\config

Linux用户打开

vim ~/.subversion/config

找到[miscellany]一节的enable-auto-props,去掉注释并且设置为enable-auto-props = yes
然后在[auto-props]一节添加或者修改.php为如下属性

[text]*.php = svn:eol-style=native; svn:keywords=Id Date Revision Author URL; svn:mime-type=text/x-php[/text]

svn:eol-style=native
表示使用客户端子系统原生换行符,在Dos和windows就是回车+换行CR/LF表示下一行,
在UNIX/Linux采用换行符LF表示下一行,在MAC OS则采用回车符CR表示下一行.(CR用符号’r’表示, 十进制ASCII代码是13, 十六进制代码为0x0D;LF使用’n’符号表示, ASCII代码是10, 十六制为0x0A.所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.)
svn:keywords=Id Date Revision Author URL
表示SVN客户端在提交文件的时候会对着5个关键词自动替换修改为对应内容(比如$Id$)
接着设置IDE
以Eclipse为例,PHP透视图下,在项目文件上右击新建->PHP File,点击下一步,有个使用PHP模板的功能,默认是用Simple php file这个模板的,这个界面上可以直接进入模板配置,点击edit,我使用如下模板

[php]
/**
* @Created: ${date} ${time}
* @Last Modify: $$Date$$
* @By $$Author$$
* @As Revision $$Revision$$
* @ID: $$Id$$
*/
${cursor}
[/php]

创建文件后,内容是这样的(如果这里你的上午/下午是乱码 看这里

[php]
/**
* @Created: 2011-8-19 上午7:58:19
* @Last Modify: $Date$
* @By $Author$
* @As Revision $Revision$
* @ID: $Id$
*/
[/php]

然后我们提交下 内容就会自己改变了

[php]
/**
* @Created: 2011-8-19 上午7:58:19
* @Last Modify: $Date: 2011-08-19 07:58:38 +0800 (周五, 19 八月 2011) $
* @By $Author: ihipop $
* @As Revision $Revision: 49 $
* @ID: $Id: newfile.php 49 2011-08-18 23:58:38Z ihipop $
*/
[/php]

Id标签使用的是0时区,Date标签使用的是本地时间。
下次修改文件内容 $$里面的东西会自己改变,这就是效率啊。
Subeclipse和tortoiseSVN都可以完美支持,使用这些客户端在这个文件上右击,就可以看见svn:keywords关键字属性了。
需要注意到是,之前创建的文件不会自动添加这些属性,所以你在之前的文件里面添加$Id$这些关键字是没有用的,必须手动或者批量添加一次

[bash]find ./ -type f -name "*.php" | xargs svn propset svn:keywords "Id Reversion Date Author"[/bash]

感谢瓢哥指点: http://weibo.com/hulupiao

Author Info :
  • From:使用svn:keywords提高开发效率
  • URL:https://blog.ihipop.com/2011/08/2698.html
  • Please Reserve This Link,Thanks!
  • 发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注