11 September 2016

1 再见 Bugfree

最近在本地一直用的缺陷管理工具 bugfree1 没法用了。原因有两点:第一,我们的 IT 管理员最近升级了 PHP 导致依赖老版本的 PHP 的 bugfree 跑不起来了;第二, bugfree 官网说不在继续开发维护了,他们转向开发禅道了,公告如下:

感谢您对BugFree的支持,我们现在向您推荐我们团队全新的产品——禅道项目管理软件。禅道是我们历时三年精心打造的一款完整的项目管理软件,涵盖了需求管理、任务管理、缺陷管理和用例管理,是研发类项目管理的必备软件! BugFree项目以后将不再有任何更新,我们也不再提供任何技术支持。

2 拥抱 MantisBT

所以,开发团队在内部外部都得不到有效的支持,就只好切换了工具了。在浩瀚如烟的缺陷管理工具中寻寻觅觅,终于选定了这只捕虫专家螳螂 MantisBT2。Mantis 简洁高效使用方便,还有一个不错的 changelog 和 milestone 管理界面,实在是难得的一个好工具。请看官网介绍及用户评价:

MantisBT makes collaboration with team members & clients easy, fast, and professional.

"We've come to respect mantis for its powerful simplicity and I go around recommending it to friends and clients alike."

– John Zastrow / Tetra Tech, Inc.

"Great product! We tried 6 different issue trackers before settling on Mantis."

– John Locke / Freelock Computing

"Very flexible great project, exactly what we need for our software development."

– Attila Strba / EnOcean

之所以选择它,还有另外一个原因,就是我一直在用的开源文件管理程序叫 Double Commander(DC)3 也是用 MantisBT 管理缺陷和需求的。

如果想对 MantisBT 有个直观的了解可以点开 DC 的问题单管理页面查看: http://doublecmd.sourceforge.net/mantisbt/view_all_bug_page.php

另外,也你也可以看到 DC 团队是如何用 MantisBT 管理 roadmap 的: http://doublecmd.sourceforge.net/mantisbt/roadmap_page.php

3 安装配置 MantisBT

我下载安装的是 1.3.1 版本的 MantisBT,在安装了 XAMPP4 的机器上安装MantisBT 简直是小菜一碟,只要几下鼠标就可以了。相对来说配置稍微麻烦一些,如果需要简单的定制你得做这些事情:

  • 创建项目,MantisBT 支持多个项目
  • 添加自定义的输入域,用来支持额外的缺陷信息,比如缺陷发现的阶段等
  • 设置并简化缺陷状态变迁表,默认的状态变迁表比较繁琐,有 feedback,acknowledge 等,可以精简掉,只保留 new,assigned,resolved,close
  • 添加用户,并将用户关联到项目

4 修改用户密码

但是问题来了,新添加的用户密码不能手动更改,系统会发一封邮件给新用户,让她/他用随机密码登陆自己去设置新密码。但是配置 SMTP 邮箱服务器又很繁琐,只好想办法通过管理员账户手动修改。

参考了以往用户的经验总结之后,修改了两个文件,成功在最新版本的 MantisBT 上实现手动修改用户密码功能。

首先,请确保使用的 MantisBT 版本为 =1.3.1=,不然的话文件内容可能不太一样,但是基本上也差不了多少,我就是参考了 simon-杨5的文章修改的,他是 2013 年 2 月 26 日写的,所以面向的是比较老的版本,有不少差异,感兴趣的朋友可以对比一下。

然后,在 manage_user_edit_page.php 文件中找到 <!-- Access Level --> ,在其上方添加:

<!-- Password -->
<div class="field-container">
    <label for="edit-password"><span><?php echo "Password (change only)" ?></span></label>
    <span class="input"><input id="edit-password" type="text" size="32" maxlength="100" name="password" value="" /></span>
    <span class="label-style"></span>
</div>
<!-- Access Level -->

接着,在 manage_user_update.php 的 74 行左右的地方找到:

$f_user_id      = gpc_get_int( 'user_id' );

在其下方增加 $f_pass = gpc_get_string('password');

$f_user_id      = gpc_get_int( 'user_id' );
$f_pass       = gpc_get_string('password');

最后,找到

$t_result = db_query( $t_query, $t_query_params );

在这句后面添加几行:

$t_result = db_query( $t_query, $t_query_params );
//Reset the password if specified.
if ($f_pass) user_set_password($f_user_id, $f_pass);
event_signal( 'EVENT_MANAGE_USER_UPDATE', array( $c_user_id ) );

然后刷新一下用户编辑页面就能修改用户密码啦。