`

bugfree与SVN整合心得

阅读更多

对于Bugfree和SVN整合,我搞了一周终于搞好了,勉强可以使用,并且整合成功。唯一Bug,就是文件信息比较多是在Bugfree中不信息显示不是很好。如附件图片 

 

1、环境的搭架,具体搭建,请见bugfree官方网站的Bugfree和Svn整合
   我用的环境是,Bugfree2.0.3  SVN1.4.6 php5

 

2、代码修复说明
post-commit.bat代码
  
@echo off
setlocal enabledelayedexpansion  /*可使用延迟变量,我是网上找的具体我也不是非常明白*/

set REPOS=%1
set REV=%2
set PHP_EXE=C:\"Program Files"\PHP\php.exe             
  /* 注意:这里如果你的路径名中有空格一定用双引号引起,不然会找不到对应路径*/
set CHECK_IN_PHP=C:\svn_ci.php
set SVN_LOOK_EXE=C:\"Program Files"\Subversion\bin\svnlook.exe

for /f "delims=" %%a in ('%SVN_LOOK_EXE% author -r %REV% %REPOS%')  do set AUTHOR=%%a
for /f "delims=" %%a in ('%SVN_LOOK_EXE% date -r %REV% %REPOS%')    do set DATE=%%a
for /f "delims=" %%a in ('%SVN_LOOK_EXE% changed -r %REV% %REPOS%') do (
set CHANGED=!CHANGED!  %%a        /* 将所有的文件更新数据连接*/
echo changed = !CHANGED!

/* */ 
for /f "delims=" %%a in ('%SVN_LOOK_EXE% log -r %REV% %REPOS%')     do set LOG=%%a
for /f "delims=" %%a in ('%PHP_EXE% -r "echo chr(0x04);"')          do set N=%%a

echo repos = %REPOS%
echo rev = %REV%
echo changed = %CHANGED%
echo LOG = %LOG%


%PHP_EXE% %CHECK_IN_PHP%  "Changeset [%REV%] by %AUTHOR%, %DATE%%N%%LOG%%N%%REV%%N%%CHANGED%"


endlocal

这个文件跟Bugfree官方网上的基本上一样,只有部分进行修改,修改地方我都进行了说明。

 

 

3、SVN_ci.php文件,代码说明,这个文件中的内容我主是通过Bugfree中api-example.php文件来修改的。我发现官网的下载文件内容基本一样。大家直接用官网上文件进行修改也是一样的。

注意:1、可以先通过PHP.exe来调试成功svn_ci.php (如PHP.exe c:\svn_ci.php "123123123 fix bug #3") 
          2、最好是Class.http.php和svn_ci.php放在同一个目录下。

SVN_ci.php代码:

<?php

/**
 * BugFree api 使用样例文件
 */
@header("Content-Type: text/html; charset=gbk");
error_reporting(E_ALL^E_NOTICE);

// 类文件可以从此链接获得:http://www.phpfour.com/blog/downloads/http-class
include('class.http.php');

define('API_NEWLINE', chr(0x03));   // 定义值参考Include/Api.inc.php
define('API_DEVIDER', chr(0x04));   // 定义值参考Include/Api.inc.php
define('API_KEY', 'YOUR_KEY');      // 定义值参考Include/Api.inc.php
define('USER_NAME', 'admin');     // 用户名
define('USER_PASSWORD', 'e10adc3949ba59abbe56e057f20f883e');  // 数据库中存储的密码,一般为md5(原始密码)
define('API', "http://192.168.23.97:8989/bugfree/api.php");      // api地址


print_r($argv);
// 解析api产生的结果
function parse($result)
{
    $apiInfo = array();
    $message = explode(API_NEWLINE, $result);
    if(count($message) == 1) return $message;

    $keyArray = explode(API_DEVIDER, $message[1]);
    $valueArray = explode(API_DEVIDER, $message[2]);
    foreach($keyArray as $key => $keyName)
    {
        $apiInfo[$keyName] = $valueArray[$key];
    }
    return $apiInfo;
}

// 加密函数
function encrypt($UserName, $UserPassword, $ApiKey, $Rand)
{
    return md5(md5($UserName . $UserPassword) . $ApiKey . $Rand);
}

$fixMessageList = explode(API_DEVIDER, $argv[1]);

print_r($fixMessageList);
// get bug IDs
$fixRegx = '/\s*fix\s*bug\s+(#(\d+)( |,)*)+/i';
preg_match_all($fixRegx, $fixMessageList[1], $regs);
$fixRegx = '/#(\d+)+/i';
preg_match_all($fixRegx, $regs[0][0], $regs);
$BugIdList = array();
if(is_array($regs[1]))
{
    $BugIdList = $regs[1];
}

 

$BugIdList = array_unique($BugIdList);
if(count($BugIdList) <= 0) exit;

// create replynote
$note = '';
$note = $fixMessageList[0] . "\n\n";
$fileList = explode("\n", $fixMessageList[3]);
$rev = $fixMessageList[2];
$pre = $rev - 1;
foreach($fileList as $file)
{
    preg_match_all('/(\w)(\s+)(.*)/', $file, $regs);
    $action = trim($regs[1][0]);
    $fileName = trim($regs[3][0]);
    if($fileName == '') continue;
    $note .= $file;
    // u can change this url's link
    $note .= '  [url=' . VIEWVC . $fileName . '?r1='. $pre . '&sortdir=down&r2=' . $rev . '&sortby=log][diff][/url]';
    $note .= "\n";
}

 

// 获得会话
$http = new Http();
$http->addParam('mode' , 'getsid');
//$http->addParam('charset' , 'GBK');
$http->execute(API);
$apiInfo = parse($http->result);
$apiInfo = parse($http->result);
print_r($apiInfo);

// 获得sessionname和sessionid,用于保持后面的对话
$sessionname = $apiInfo['sessionname'];
$sessionid = $apiInfo['sessionid'];

// 使用刚刚获得的会话id进行登录
$http = new Http();
$http->addParam('mode' , 'login');
$http->addParam('charset' , 'GBK');
$http->addParam('username' , USER_NAME);
$http->addParam('auth' , encrypt(USER_NAME, USER_PASSWORD, API_KEY, $apiInfo['rand']));
$http->addParam($sessionname , $sessionid);
$http->execute(API);
$apiInfo = parse($http->result);


print_r($apiInfo);

 

// 编辑Bug
//$BugID = 2;
foreach($BugIdList as $BugID)//遍历所有BugID
{
$http = new Http();
//$http->addParam('charset' , 'GBK');
$http->addParam('mode' , 'updatebug');
//$http->addParam('BugID' , 3);
$http->addParam('BugID' , $BugID);
$http->addParam('ReplyNote' , $note);
//$http->addParam('ReplyNote' , $note);
$http->addParam($sessionname , $sessionid);
$http->execute(API);
$apiInfo = parse($http->result);
print_r($apiInfo);
}

/*
$http = new Http();
$http->addParam('charset' , 'GBK');
$http->addParam('mode' , 'updatebug');
$http->addParam('BugID' , 3);
//$http->addParam('BugID' , $BugID);
$http->addParam('ReplyNote' , $argv[1]);
//$http->addParam('ReplyNote' , $note);
$http->addParam($sessionname , $sessionid);
$http->execute(API);
*/
?>

4、调试Bat文件,(可以将post-commit.bat复制到C盘下,将代码库中hooks目录下的,post-commit.bat修改如下:)
   @echo off
    setlocal
    c:/post-commit.bat %1 %2 > c:/test.log  /*执行C盘下的post-commit.bat,将输入结果存放在c:/test.log文件中*/
   endlocal

5、手动运用 C:\Program Files\Subversion\bin\svnlook.exe 进行一些调试用。网上有更加详细说明。

 

附件中有修改后效果图和修改后文件 

 

 

  • 大小: 71.6 KB
分享到:
评论

相关推荐

    bugfree svn整合(一)

    3. **配置BugFree与SVN连接**:在BugFree的后台管理中,你需要配置与Subversion服务器的连接信息,包括服务器地址、仓库路径、用户名和密码。这样,BugFree就可以通过API或Web钩子与SVN通信,获取提交信息,更新bug...

    bugfree svn整合(二)

    bugfree svn整合说明文档,您还需要下载(一)才能更好、更快地帮助您完成bugfree与svn的整合。

    apache+svn+MySQL+PHP+svnmanager+bugfree完全安装手册

    - 安装 BugFree 的 SVN 插件,实现与 SVN 的集成。 #### 六、总结 通过上述步骤,可以实现 Apache、SVN、MySQL、PHP、SVNManager 和 BugFree 的完整安装与配置。这将为团队提供一套功能完备的版本控制和缺陷跟踪...

    BugFree--项目开发管理软件

    6. **集成能力**:作为一个开放源码项目,BugFree能够与各种工具和服务进行集成,如邮件通知、持续集成系统等,增强整体的工作流效率。 7. **易用性**:基于PHP和MySQL的架构,使得BugFree具有较低的运行门槛,同时...

    TestLink1.8.5_BugFree2.1集成.rar

    BugFree还支持与其他版本控制工具的集成,例如SVN或Git,以便更好地追踪代码修改与缺陷修复的关系。 将TestLink和BugFree集成,可以实现以下主要功能: 1. **自动化测试结果导入**:测试人员在TestLink中执行测试...

    SVN教程 SVN与myeclipse整合

    SVN教程 SVN与myeclipse整合指导

    bugfree搭建

    9. **与版本控制系统集成**:如果需要,可以在BugFree中配置与Git或SVN的集成,这样可以直接从BugFree界面查看和链接代码更改。 10. **用户和项目管理**:安装完成后,管理员可以在BugFree中创建项目,邀请团队成员...

    bugfree3.0.1.zip

    7. **集成能力**:BugFree可以与版本控制系统(如Git、SVN)、构建工具(如Jenkins)以及持续集成/持续部署(CI/CD)工具进行集成,实现无缝的工作流程。 8. **用户界面**:3.0.1版本可能包含了一些用户界面的优化,...

    bugfree2.0 软件测试工具

    7. **可扩展性**:Bugfree采用Web接口,易于与其他系统集成,如版本控制系统(SVN、Git等)和持续集成工具(Jenkins、Travis CI等)。 ### 二、软件测试操作流程 1. **需求分析**:首先,团队需明确项目需求,将...

    缺陷管理工具bugfree

    5. **集成能力**:虽然BugFree本身是一个独立的工具,但它也可以与其他开发工具(如SVN、Git等版本控制系统)和持续集成工具(如Jenkins)集成,实现数据同步和自动化流程。 6. **安装与配置**:BugFree的3.04版本...

    MyEclipse整合svn客服端插件

    在本教程中,我们将详细介绍如何将MyEclipse与SVN客户端插件整合,以便更方便地进行代码版本管理。 首先,了解SVN的基本概念是必要的。SVN是一种分布式版本控制系统,用于跟踪项目中的文件和目录的变化,便于多人...

    SVN项目整合工具

    - `svn diff`:查看工作副本与仓库之间的差异。 - `svn merge`:合并两个分支的更改。 - `svn revert`:撤销本地更改,恢复到上一次提交的状态。 3. **SVN整合工具的使用** - **TortoiseSVN**:一个直观的...

    bugfree缺陷管理工具

    8. **集成能力**:BugFree可以与版本控制系统(如Git、SVN)、构建工具(如Jenkins)以及其他开发工具(如IDE)集成,实现更高效的开发流程。 9. **用户体验**:BugFree的界面设计简洁明了,使得非技术背景的团队...

    SVN整合Myeclipse

    通过对SVN与MyEclipse的整合配置,开发团队不仅能够享受到版本控制带来的诸多便利,还能提高团队协作的效率和代码的质量。同时,通过上述详细的步骤介绍,相信读者已经掌握了如何在自己的开发环境中进行类似的配置...

    bugfree源码和相应的安装文档-bug系统

    BugFree是一款基于Web的开源缺陷管理系统,主要用于软件测试过程中跟踪和管理bug。它采用PHP语言开发,具有易用性、可扩展性和灵活性等特点,适用于中小型项目或团队进行质量管理。在这个压缩包中,我们找到了"bug...

    关于svn与Apache整合

    关于svn与Apache整合以及svn一些常用问题的解决,

    svn使用心得

    8. 版本库备份与迁移:SVN仓库的数据可以通过导出和导入功能进行备份,也可以通过复制整个仓库目录进行物理备份。如果需要迁移仓库到其他服务器,可以使用SVN的迁移工具或复制仓库数据。 9. 权限管理:SVN支持细...

    SVN+apache整合

    ### SVN与Apache整合知识点详解 #### 一、SVN简介及数据存储方式 **SVN**(Subversion)是一种广泛使用的版本控制系统,它管理着项目的源代码历史,使得开发者能够追踪每一项修改,回滚到任意历史版本,以及并行开发...

Global site tag (gtag.js) - Google Analytics