Mantis安装配置和Mantis与SVN的整合 (for linux)


下载mantis
wget http://downloads.sourceforge.net/project/mantisbt/mantis-stable/1.2.6/mantisbt-1.2.6.tar.gz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fmantisbt%2Ffiles%2Fmantis-stable%2F1.2.6%2F&ts=1313739271&use_mirror=nchc
安装mantis
先安装好lampp这样mysql,php,apache都搞定了。
http://www.apachefriends.org/zh_cn/xampp-linux.html
把mantis文件解压到apache主目录里
cp mantisbt-1.2.6.tar.gz /opt/lampp/htdocs
tar -zxvf mantisbt-1.2.6.tar.gz
mv mantisbt-1.2.6 mantis
安装前先在数据库创建个库,名称为:bugtracker
进web页面安装
http://yoursite/mantis/admin/install.php
安装完成后
http://yoursite/mantis/
默认帐号密码
administrator/root
配置
vi /opt/lampp/htdocs/mantis/config_inc.php
$g_default_language   = 'chinese_simplified'; //设置默认中文
$g_smtp_host = '192.168.1.220';     //邮箱配置smtp地址
$g_smtp_username = 'supporter';    //smtp帐号 无smtp认证则不要
$g_smtp_password = 'sdfsdf';         //smtp密码 无smtp认证则不要
$g_phpMailer_method = 2;            //smtp发送邮件为2
$g_return_path_email = 'supporter@ivg.com';    
$g_from_email = 'supporter@ivg.com';       //发送邮件显示的地址
$g_allow_signup = OFF;                     //关闭自注册功能
$g_delete_bug_threshold = administrator;     //删除问题需要管理员权限? (未确认作用)
$g_show_realname = ON;  //mantis里面显示姓名而不是帐号
$g_allow_file_upload  = ON;    //开启上传附件
$g_file_upload_method = DISK;  //以文件形式保存磁盘,默认保存到数据库. //建议修改为保存磁盘文件 否则上传超过900K文件可能报错.
$g_max_file_size = 100000000; 
// 配置mantis的上传文件大小为100M .默认2M ,同时还要修改php上传文件限制,不会改的可以看这个http://starsliao.blog.163.com/blog/static/890482010102535440845/
$g_absolute_path_default_upload_folder = '/opt/lampp/htdocs/mantis/upload/';  //配置默认上传文件路径
$g_show_version = OFF; # 不在页面下部显示Mantis的版本号
$g_show_project_menu_bar = ON;# 显示项目选择栏
$g_show_queries_count = OFF; # 在页脚不显示执行的查询次数
$g_default_new_account_access_level = DEVELOPER; # 默认用户级别
$g_use_jpgraph = ON; # 使用图形报表
$g_window_title = 'Mantis Bug 跟踪管理系统'; # 浏览器标题
$g_page_title = 'Mantis Bug 跟踪管理系统'; # 页面标题栏
 $g_short_date_format = 'Y-m-d'; # 短日期格式,Y 大写表示 4 位年
$g_normal_date_format ='Y-m-d H:i'; # 普通日期格式
$g_complete_date_format ='Y-m-d H:i:s'; # 完整日期格式   
$g_view_summary_threshold = DEVELOPER; #查看报表的权限
mantis页面自助修改密码(不通过邮件方式)

修改文件 manage_user_edit_page.php
            1) 找到该行:"<!-- Email -->
            2) 粘贴下面代码:
<!-- Password -->
<tr <?php echo helper_alternate_class( 1 ) ?>>
<td class="category" width="30%">
<?php echo "Password (change only)" ?>:
</td>
<td width="70%">
<input type="text" size="16" maxlength="100" name="password" value="" />
</td>
</tr>
 修改文件 manage_user_update.php
            1) 找到该行: $f_user_id = gpc_get_int( 'user_id' );
            2) 在该行下粘贴下面行:
$f_pass = gpc_get_string('password');
            3) 找到该行: $result = db_query( $query );  有的版本是:$result = db_query_bound( $query, $query_params );
            4) 在该行上面粘贴下面行:
//Reset the password if specified.
if ($f_pass) user_set_password($f_user_id, $f_pass);

mantis与SVN整合(mantis和svn在一台服务器)
SVN的安装已经与apache的整合请查看http://starsliao.blog.163.com/blog/static/890482010565571968/
1.建立mantis与subversion通信的特殊用户
登录mantis (管理员)manager--->Manage Users 增加一个svnbot用户,权限为:developer(开发者),如果有多个项目,请每个项目都赋予svbbot开发者权限
2.在mantis中新建一个项目和一个问题做整合后的测试
3.新增脚本
增加svn2mantis.pl脚本,放在/opt目录下,赋执行权限
vi svn2mantis.pl
$prgname = substr($0, rindex($0,"/")+1);
$ver = "1.12 (2010/10/7)";
$REPOS=$ARGV[0];
$REV=$ARGV[1];
# $sshcmd 设为空字符串表示 SVN 与 Mantis 安装在相同主机
$sshcmd = defined($ARGV[2])?"/usr/bin/ssh ".$ARGV[2]:"";

$svnlook = "export LANG=zh_CN.UTF-8;/usr/bin/svnlook";    //svnlook的路径
$phpcmd = "/opt/lampp/bin/php";                            //php的路径
$checkincmd = "/opt/lampp/htdocs/mantis/scripts/checkin.php";     //mantis的checkin.php的路径
if ($sshcmd eq '') {
 if (!-f $checkincmd) {
 $checkincmd = "/opt/lampp/htdocs/mantis/scripts/checkin.php";
  if (!-f $checkincmd) {
  print("Local Mantis checkin.php is not exist!n");
  exit;
  }
 }
}
else {
 $msg=`$sshcmd file $checkincmd`;
 if (index($msg, 'ERROR')>0) {
 $checkincmd = "/opt/lampp/htdocs/mantis/scripts/checkin.php";
 $msg=`$sshcmd file $checkincmd`;
  if (index($msg, 'ERROR')>0) {
  print("Remote Mantis checkin.php is not exist!n");
  exit;
  } 
 }
}
$auth=`$svnlook author -r $REV $REPOS`;
$dt=`$svnlook date -r $REV $REPOS`;
$changed=`$svnlook changed -r $REV $REPOS`;
$log=`$svnlook log -r $REV $REPOS`;
$msg="Changeset [".$REV."] by $authn$dtn$logn$changed";
if (length($sshcmd)>0) {
 `$sshcmd $phpcmd -q $checkincmd <<< "$msg"`;
}
else {
 `$phpcmd -q $checkincmd <<< "$msg"`;
}

增加post-commit脚本,放在svn的库的hooks目录(/opt/svn/test/hooks)下,赋执行权限
vi post-commit
#!/bin/sh
REPOS="$1"
REV="$2"
/opt/svn2mantis.pl "$REPOS" "$REV"
##############
这俩个脚本结合mantis的checkin.php共同做整合的。
4.配置mantis的config_inc.php
vi /opt/lampp/htdocs/mantis/config_inc.php
$g_source_control_account = 'svnbot';
$g_source_control_set_status_to = RESOLVED;
$g_source_control_regexp = '/b(?:bug|issue|mantis)s*[#]{0,1}(d+)b/i';
$g_source_control_set_resolution_to = FIXED;
$g_source_control_fixed_regexp = '/bfix(?:ed|es)s+(?:bug|issue|mantis)?s*[#]{0,1}(d+)b/i';
5.SVN客户端配置
在TortoiseSVN里设置一下项目的属性,右键点击已经检出的目录,属性,在subversion一栏里,加入这几个属性:
bugtraq:label = issue
bugtraq:url = <A href="http:///mantis/view.php?id=%BUGID%">http://<mantisserver>/mantis/view.php?id=%BUGID%
bugtraq:message = issue %BUGID%
bugtraq:warnifnoissue = true
6.测试checkin.php
登陆mantis创建一个问题 第一个问题编号为#0000001
[root@svn ~]#/opt/lampp/bin/php /opt/lampp/htdocs/mantis/scripts/checkin.php<<< "Test fixed issue #0000001 by svnbot."
登陆mantis查看问题#0000001的状态为 解决 修正.表示正常.
7.测试svn2mantis.pl
语法svn2mantis.pl 仓库路径(repository) 修订号(revision)
测试前在测试仓库test中建立一个文件如test.txt,第一次提交的话,修订号默认是1
/opt/svn2mantis.pl /opt/svn/test/ 1
貌似没提示表示正常.
8.整体测试
11.2 测试使用
在本地SVN客户端test库创建一个文件,然后提交,提交时,在SVN客户端ISSUE栏,填入你在mantis中创建问题的的问题编号(0000002),然后在message栏随便填入 格式如:
(这里就是mantis的config_defaults_inc.php文件中的$g_source_control_regexp部分的正则表达式匹配的内容)
fixed issue #1 
xxxxxxxxxxxxxxxxxxxxxxxx
带有fixed字眼的内容,会在mantis后台看到相关ISSUS状态改变成已解决,已修正,并且添加注释
没有带fixed字眼的内容,不会改变相关状态值,只是添加注释
此时说明subversion和mantis集成成功了。

####################
Mantis 统计图表的显示与中文显示问题
到这里http://quattorsrv.lal.in2p3.fr/packages/lemon/sl-i386/msttcorefonts-2.0-1.noarch.rpm
 下载msttcorefonts-2.0-1.noarch.rpm,安装。
rpm -ivh msttcorefonts-2.0-1.noarch.rpm
然后 ln -s /usr/X11R6/lib/X11/fonts/truetype/ /usr/share/fonts/truetype
图表就能正常显示了.

用windows的字体文件夹中找到宋体,复制到桌面上,改名为arial.ttf
然后传到/usr/X11R6/lib/X11/fonts/truetype 这个目录下替换原来的文件.(先备份)即可

Mantis上传附件到disk的设置方法

#修改mantis/config_inc.php配置文件
$g_allow_file_upload  = ON;
$g_file_upload_method = DISK;
$g_absolute_path_default_upload_folder = '/opt/mantis/data/';
#上传文件的大小受到 Mantis/config_inc.php 和 PHP/php.ini 的双重限制需要修改:
/webapps/mantis/config_inc.php:
$g_max_file_size = 10000000; # 这个单位是K,10000000K=10 MB
PHP/php.ini:
upload_max_filesize = 10M
post_max_size = 10M



md5-1f4ff8a7fbc0e14d5cdc91ae60c8b4cb



#在Mantis目录下新建目录如 upload,再在mantis建立的项目中把文件上传路径设置为“upload”(通过Web方式)。这样上传的文件就会存放在upload目录中。但是设置是把服务器的绝对路径配进去了,结果我在其他机器上登录后,提交bug时,附件总是提交不上去,后来我把服务器上的upload目录设置为共享,并且赋予写的权限,然后再web页面上配置了//ServerIP/upload,然后再上传附件,发现就可以成功上传了。



md5-1f4ff8a7fbc0e14d5cdc91ae60c8b4cb



#附件直接浏览功能:
目前Mantis只是针对bmp, png, gif,jpg格式的图片文件实现了在web页内直接浏览功能。
config_defaults_inc.php:
$g_preview_attachments_inline_max_size = 10 * 1024 * 1024;

http://mantis.blizzmi.local/admin/system_utils.php 迁移数据到磁盘



md5-1f4ff8a7fbc0e14d5cdc91ae60c8b4cb



设置下拉菜单默认值
vi config_defaults_inc.php

#严重性:轻微
$g_default_bug_severity = 20;

优先级:中
$g_default_bug_priority = 20;

#出现频率:中
$g_default_bug_reproducibility = 10;