BugFree和SVN的整合
http://www.bugfree.org.cn/blog/?p=49
Subversion是目前主流的版本管理工具之一,在很多项目的开发中我们都可以看到它的身影。
每次fix bug并提交代码到SVN,必然会有一些文件更新(或增加、或删除),那么如何将这些文件的更新信息同BugFree中被fix的Bug有机的结合起来呢?下面的内容能够帮助你实现这一目的。
一、准备工作
- 安装/升级至BugFree2.0.2
- 在Subversion的服务器上安装php
- 安装 ViewVC(一种web端浏览Subversion的工具)。如果没有比较版本历史差异的需求,可跳过此步骤
- 下载BugFreeforSVN.tar.gz
BugFreeforSVN.tar.gz中的文件说明:
- svn_ci.php :用于向BugFree提交svn信息的php脚本。你可以将此文件放置在Subversion服务器的某个目录,如:/somwhere/svn_ci.php
- post-commit:svn每次成功提交后触发的钩子脚本。应将此文件放置在代码库的hooks目录中,如:/home/svnadmin/repos/yourproject/hooks/。一般情况下,你应该给该文件设置可执行权限。cd /home/svnadmin/repos/yourproject/hooks/
chmod +x post-commit - post-commit.bat:功能同上,用于windows平台
- class.http.php:第三方的http类文件。你也可以到 http://www.phpfour.com/lib/http 自行下载
二、修改配置
修改svn_ci.php:
- define('API_NEWLINE', chr(0x03)); // API行分隔符,默认不用修改
- define('API_DEVIDER', chr(0x04)); // API列分隔符,默认不用修改
- define('API_KEY', 'YOUR_KEY'); // API加密KEY,请参考BugFree的Include/Api.inc.php中的值进行修改
- define('API', "http://127.0.0.1/bugfree/api.php"); // BugFree的api地址
- define('USER_NAME', 'admin'); // 用于向BugFree提交svn信息的用户名(建议设为管理员之一,这样可以修改所有的Bug)
- define('USER_PASSWORD', 'e10adc3949ba59abbe56e057f20f883e'); // 用户加密后的密码(默认是md5(原始密码))
- define('VIEWVC', 'http://bugfree.svn.sourceforge.net/viewvc/bugfree/'); // ViewVC查看代码的根地址
修改post-commit:
- PHP_EXE='/phppath/php' #php可执行文件的路径
- CHECK_IN_PHP='/somwhere/svn_ci.php' #svn_ci.php的路径
- SVN_LOOK_EXE='/svnpath/svnlook' #svnlook可执行文件的路径
windows平台下post-commit.bat的修改可参考post-commit
三、如何使用
每次提交代码时,在注释里填写含有” fix bug #123” 等类似格式的信息,就会把相应的文件更新信息提交到BugFree中。
例:
- 修改文件branch/BugFree2.0_demo/Bug.php
- 提交修改,假设此次fix的Bug号为123: svn ci -m ' fix bug #123 '
- 查看BugFree中Bug号为123的Bug,则会发现其多了一行类似以下格式的注释:
-
2008-08-08 08:08:08 Edited by admin
Changeset [559] by leeyupeng, 2008-08-08 08:08:08 +0800 (Fri, 8 Aug 2008)
U branch/BugFree2.0_demo/Bug.php [diff]
注释说明:
- [559]:提交后的版本号
- leeyupeng :提交人
- 2008-08-08 08:08:08 +0800 (Fri, 8 Aug 2008):提交时间
- U branch/BugFree2.0_demo/Bug.php:修改的文件列表。若一次提交有多个文件被修改,则分行显示
- [diff] :与前一版本的差异比较链接
四、其他说明
关于提交信息的格式:
一次提交可能修改了多个bug,那么我们在svn提交填写提交信息时,多个Bug号可以用空格、英文逗号隔开。
如下格式都是可以的:
fixbug #123 #456
lee fix bug #123,#456
fix bug #123, #456
fix bug #123, #456. God!
每个Bug号开头用#标识,并保证文字fix bug 和第一个Bug号之间不少于一个空格。
当然,这可能并不符合你所在团队的习惯,你可以通过修改svn_ci.php中35行附近的正则表达式:/fixs*bug.../i来定制自己的message格式 :-)。
关于diff链接 :
你可能没有安装ViewVC,或者有其他Web方式浏览版本库的工具,那么可以通过修改 svn_ci.php中60行附近的$note .= ' [url=' . VIEWVC . $fileName . '?r1='. $pre . '&sortdir=down&r2=' . $rev . '&sortby=log][diff][/url]';来定制链接参数。
参考文章