标题: 业余开发团队的网络合作, 2. 问题跟踪系统(svn+trac)的搭建
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5795
编号 622
注册 2004-7-7


发表于 2010-5-26 22:08 资料 文集 短消息 只看该作者
业余开发团队的网络合作

作者 Maxwell
转载请注明转自轩辕春秋文化论坛 设计与修改区
http://www.xycq.net/forum/forum-48-1.html
原帖地址http://www.xycq.net/forum/thread-210245-1-1.html
谢谢合作

前言
 设定
  本文设定的主要使用环境是通过网络合作的业余开发团队,团队总人数不超过20人,开发测试人员不超过10人。当然本文介绍的软件和配置方式足以支撑更大规模的团队使用,但是本文面向的是小规模业余开发团队。本文所配置的系统是实际应用于轩辕棋牌游戏项目的问题跟踪系统,但是并不保证该项目所用系统在调整后本文档会同步更新。实际上本文的目的是通过一个实际的系统来说明如何配置、管理一个问题跟踪系统,而不是作为项目的存档记录。
  本文预期的读者是希望使用问题跟踪系统但是尚无实际使用经验的开发团队,读者应该具备基本的配置管理知识,了解缺陷跟踪和版本控制系统是怎么回事,能够熟练地安装软件和从命令行执行命令。本文同时适用于个人业余开发。
  本文重点在问题跟踪系统本身,如何将问题跟踪系统融入到项目管理中要看团队具体使用的软件工程方法,读者应结合自己使用的方法来制定使用问题跟踪系统的规则。个人观点上比较支持业余团队使用经过适当裁剪的XP方法,这在学习难度和实践难度上都比较简单,但是相关讨论已经超出了本文的范围。文中差错难免,期待指教。
 Trac是什么
  Trac是一个轻量级的问题跟踪系统(issue tracking system)。提到跟踪系统,可能很多人都会想起著名的bugzilla,它最初是用于缺陷跟踪(defect tracking)的。因为很多情况下还是很难分别一个问题是需求变更还是bug,近年来的一个趋势是将需求和缺陷使用单一系统管理,这基本上就是问题跟踪系统的核心内容。Trac做的事情大致上是3件,基于wiki的文档管理、问题跟踪和进度管理,另外还能将版本控制系统集成到统一界面中。Trac在单系统中支持多项目和多仓库,支持账户和权限管理,有简单的工作流用于问题跟踪,trac还支持插件系统,有很多插件可以扩充功能。
 Trac不是什么
  武林高手摘片树叶就能伤人,但是手持倚天剑的白痴还是白痴,这个道理不难理解。但是在现实中我还是很不幸地遇到了很多试图通过工具摆脱某一群人的CMM1级水平的情况。因此需要注意的是,trac不是神器,它不能告诉你项目的需求,也不会减少项目的缺陷数量,更不能指望用上它之后项目一定成功。别以为不停地写任务单、提交代码会让你的产品质量提高或者进度可控,最终做到这些的都是你的团队成员,trac只是让这些事情实现起来简单一些而已。如果你确信你没有过多的期待,请继续向下阅读,否则,最好现在就去搜索一下看看哪里有符合你预期的东西,另外,发现后别忘了告诉我一声。
安装Trac所需软件包
  按照设定的使用环境,需要以下软件包:
  1. Apache2.2
  2. MySQL5.1
  3. Python2.6
  4. Svn1.6
  5. Python2.6 bindings for subversion
  6. mod_wsgi
  7. MySqlDb
  8. SetupTools
  9. Babel
    多语言支持。
  10. Genshi
  11. Trac0.12b1
  12. TortoiseSVN
  13. AccountManagerPlugin
    AccountManagerPlugin是trac的一个插件,用于提供html形式的登录功能。
  14. SvnAuthzAdminPlugin
    Trac的svn仓库授权管理插件。
  15. TracWysiwygPlugin
    Trac的wiki所见即所得编辑插件。
  如果对以上软件包都比较熟悉,可以自行下载,否则可以从下面的地址下载。每个软件包一般提供2个地址,第1个是下载页面,对于小版本号的升级,通过下载页面可能能下载到更新的版本,第2个是下载链接,直接链接到本文使用的文件上,但是随着版本更新,链接有可能失效。本文以32位windows系统为例,如果需要64位软件包请自行下载。Trac的插件都可以直接从网络安装,在下载页面上同时有网络安装的url,有经验的读者可以不用下载直接从网络安装。
  1. Apache2.2
    在VisualSVN中包含有一个稍微早一些版本的apache,因此如果不是需要与其它依赖apache的系统集成的话,就不必单独下载了。
    http://httpd.apache.org/download.cgi
    http://apache.etoak.com/httpd/binaries/win32/httpd-2.2.15-win32-x86-openssl-0.9.8m-r2.msi
  2. MySQL5.1
    Oracle相当的不厚道,自从收购了Sun以后,MySQL的网站是越做越差了,现在想下载一个老一点儿的版本都不容易了。
    http://www.mysql.com/downloads/mysql/
    http://dev.mysql.com/get/Downloads/MySQL-5.1/mysql-noinstall-5.1.47-win32.zip/from/http://mysql.mirrors.hoobly.com/
  3. Python2.6
    http://www.python.org/
    http://www.python.org/ftp/python/2.6.5/python-2.6.5.msi
    Python直接从首页左边的Quick Links的Windows Installer下载即可,点下载页面可能打不开。
  4. Svn1.6
    Svn的总下载页面,里面有不同发行版的svn
    http://subversion.apache.org/packages.html
    本文选择的是VisualSVN
    http://www.visualsvn.com/server/download/
    http://www.visualsvn.com/files/VisualSVN-Server-2.1.2.msi
  5. Python2.6 bindings for subversion
    这个是for 1.6.6的,没找到最新版的,这个能用。
    http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=8100
    http://subversion.tigris.org/files/documents/15/46888/svn-python-1.6.6.win32-py2.6.exe
  6. mod_wsgi
    http://code.google.com/p/modwsgi/downloads/list
    http://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-win32-ap22py26-3.0.so&can=2&q=
  7. MySqlDb
    http://www.codegood.com/archives/4
    http://www.codegood.com/download/4/
  8. SetupTools
    http://pypi.python.org/packages/2.6/s/setuptools/
    http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11.win32-py2.6.exe
  9. Babel
    http://babel.edgewall.org/wiki/Download
    http://ftp.edgewall.com/pub/babel/Babel-0.9.5-py2.6.egg
  10. Genshi
    如果安装系统的机器能访问网络,不用下载。
    http://genshi.edgewall.org/wiki/Download
    http://ftp.edgewall.com/pub/genshi/Genshi-0.6-py2.6.egg
  11. Trac0.12b1
    http://trac.edgewall.org/wiki/TracDownload
    http://ftp.edgewall.com/pub/trac/Trac-0.12b1.zip
  12. TortoiseSVN
    http://tortoisesvn.net/downloads
    安装程序
    http://downloads.sourceforge.net/project/tortoisesvn/Application/1.6.8/TortoiseSVN-1.6.8.19260-win32-svn-1.6.11.msi?use_mirror=surfnet
    简体中文语言包
    http://downloads.sourceforge.net/project/tortoisesvn/Language%20Packs/1.6.8/LanguagePack_1.6.8.19260-win32-zh_CN.msi?use_mirror=cdnetworks-kr-2
  13. AccountManagerPlugin
    http://trac-hacks.org/wiki/AccountManagerPlugin#Install
    http://trac-hacks.org/changeset/latest/accountmanagerplugin/trunk?old_path=/&filename=accountmanagerplugin/trunk&format=zip
  14. SvnAuthzAdminPlugin
    http://trac-hacks.org/wiki/SvnAuthzAdminPlugin
    http://trac-hacks.org/changeset/latest/svnauthzadminplugin?old_path=/&filename=svnauthzadminplugin&format=zip
  15. TracWysiwygPlugin
    http://trac-hacks.org/wiki/TracWysiwygPlugin
    http://trac-hacks.org/changeset/latest/tracwysiwygplugin?old_path=/&filename=tracwysiwygplugin&format=zip
Trac安装配置
 安装
  本文中用到的软件包通常都有不止一种安装方式,如果读者对某个软件包的安装比较熟悉,可以按照自己喜欢的方式安装。
  按照我的习惯,程序和数据分别集中存放,程序安装在d:\trac_programs中,数据保存在e:\trac_data中。
  1. Apache2.2/python2.6/svn1.6没什么好说的,一步一步安装就可以。python2.6可以不要Tcl/Tk和Test suite。安装完python2.6之后再安装Python2.6 bindings for subversion、SetupTools和MySqlDb。
  2. MySQL5.1解压到d:\trac_programs。如果空间比较紧张,可以删除Embedded目录、mysql-test目录、所有的debug目录以及剩余目录中的*.pdb/*.map文件,或者干脆下载mysql-essential-5.1.47-win32.msi。MySQL的目录最好改为mysql-5.1,这样将来升级版本时直接覆盖目录不需要重新安装服务。
  3. 如果安装系统的机器不能访问网络,从命令行中执行
    d:\trac_programs\Python26\Lib\site-packages\easy_install.py Genshi-0.6-py2.6.egg
  4. 从命令行中执行
    d:\trac_programs\Python26\Lib\site-packages\easy_install.py Babel-0.9.5-py2.6.egg
  5. 把Trac-0.12b1.zip解压到一个临时目录中,从命令行中进入临时目录执行
    setup.py compile_catalog -f
    setup.py install
  6. 把accountmanagerplugin_trunk-r7987.zip中的trunk目录解压到一个临时目录中,从命令行进入临时目录执行
    setup.py install
  7. 把svnauthzadminplugin-r8000.zip中的0.11目录解压到一个临时目录中,从命令行进入临时目录执行
    setup.py install
  8. 把tracwysiwygplugin-r8000.zip中的0.12目录解压到一个临时目录中,从命令行进入临时目录执行
    setup.py install
  9. 把mod_wsgi-win32-ap22py26-3.0.so复制到Apache2.2的modules目录中。
  10. 删除安装过程中使用的临时目录。
  11. 在命令行执行
    net stop visualsvnserver
    sc config visualsvnserver start= disabled
    停止并禁用visualsvnserver服务。
  12. TortoiseSVN是客户端程序,不要安装在d:\trac_programs中,安装在每台客户机上,然后装上语言包。
  安装就此告一段落,下面开始配置工作。
 配置
  Trac
  在e:\trac_data中建立目录sites作为所有trac项目的父目录。
  在sites目录中建立一个文本文件命名为trac.wgsi,内容如下:

QUOTE:
import sys
sys.stdout = sys.stderr

import os
os.environ['TRAC_ENV_PARENT_DIR'] = 'e:\\trac_data\\sites\\'

import trac.web.main

application = trac.web.main.dispatch_request

  sys.stdout = sys.stderr是为了让某些插件能够输出错误信息。如果机器上只打算有一个项目可以将os.environ['TRAC_ENV_PARENT_DIR']改为os.environ['TRAC_ENV'],要注意目录中的'\'要改为'\\'或者'/'。
  在e:\trac_data\sites目录中创建一个文本文件命名为trac_global.ini,内容如下:

QUOTE:
# -*- coding: utf-8 -*-

[trac]
default_charset = utf-8
authz_file = e:/trac_data/svn_repos/authz

[components]
acct_mgr.admin.accountmanageradminpage = enabled
acct_mgr.api.accountmanager = enabled
acct_mgr.htfile.htpasswdstore = enabled
acct_mgr.web_ui.accountmodule = enabled
acct_mgr.web_ui.loginmodule = enabled
svnauthz.* = enabled
trac.web.auth.loginmodule = disabled
tracwysiwyg.* = enabled

[account-manager]
password_format = htpasswd
password_file = e:/trac_data/svn_repos/htpasswd
password_store = HtPasswdStore

  Apache
  编辑apache2.2的conf目录中的httpd.conf文件,增加trac配置:

QUOTE:
LoadModule wsgi_module modules/mod_wsgi-win32-ap22py26-3.0.so

WSGIScriptAlias /trac e:\trac_data\sites\trac.wsgi

<Directory e:\trac_data\sites\>
  WSGIApplicationGroup %{GLOBAL}
  Order deny,allow
  Allow from all
</Directory>

  WSGIScriptAlias后面的/trac是从url中访问的路径,这样可以用形http://host:port/trac/的方式打开一个目录页面,页面中列出了所有的项目,可以根据实际需要修改这个名称。
  在e:\trac_data\中建立svn_repos目录,在httpd.conf文件中,增加svn配置:

QUOTE:
LoadModule authz_svn_module "d:/trac_programs/VisualSVN Server/bin/mod_authz_svn.so"
LoadModule dav_module modules/mod_dav.so
LoadModule dav_svn_module "d:/trac_programs/VisualSVN Server/bin/mod_dav_svn.so"

<Location /svn/>
  DAV svn

  SVNListParentPath on
  SVNParentPath "e:/trac_data/svn_repos/"

  AuthName "Subversion Repositories"
  AuthType Basic
  AuthUserFile "e:/trac_data/svn_repos/htpasswd"
  AuthzSVNAccessFile "e:/trac_data/svn_repos/authz"

  require valid-user
</Location>

  在apache2.2的bin目录中执行
    htpasswd -c e:\trac_data\svn_repos\htpasswd admin
  创建一个amdin账号。
  MySQL
  将MySQL目录中的data目录复制到e:\trac_data中并重命名为mysqldata。
  在MySQL目录中有形如my-xxxx.ini的多个配置文件,根据项目的规模选择一个文件复制为my.ini,考虑到本文所针对的项目一般都不大,选择my-small.ini文件复制为my.ini并修改:
  在[mysql]段中增加:

QUOTE:
default-character-set=utf8

  在[mysqld]段中增加:

QUOTE:
datadir="e:\\trac_data\\mysqldata\\"
default-character-set=utf8
default-collation=utf8_bin
default-storage-engine=INNODB

  修改完my.ini文件后在MySQL的bin目录中执行
    mysqld --install mysqld --defaults-file=d:\trac_programs\mysql-5.1\my.ini
  将MySQL安装为服务然后执行
    net start mysqld
  启动MySQL。以后重启系统MySQL服务会自动启动。还是在bin目录中运行
    mysql -u root
  在提示符下执行
    grant usage on *.* to 'trac'@'localhost' identified by 'trac' with grant option;
  创建一个名为trac密码为trac只能在本机登录的账户,执行
    set password for 'root'@'localhost' = password('123');
    set password for 'root'@'127.0.0.1' = password('123');
    给root用户加上密码。
创建trac项目
  以创建一个名为first project的项目为例说明,设定trac网站的目录为firstproject,svn代码仓库的目录为firstsvn,数据库名为firstdb。
1. 创建MySQL数据库
  在MySQL的bin目录中运行
    mysql  -u root -p
  在mysql提示符下执行
    mysql> create database firstdb;
    Query OK, 1 row affected (0.00 sec)
  注:如果无法修改MySQL的ini文件,需要用下面的语句在创建数据库时指定字符集
    create database firstdb default character set utf8 collate utf8_bin;
  给trac用户firstdb数据库的授权
    mysql> grant all on firstdb.* to 'trac'@'localhost';
    Query OK, 0 rows affected (0.05 sec)
2. 创建代码仓库
  在VisualSVN Server的bin目录中执行
    svnadmin create e:\trac_data\svn_repos\firstsvn
  创建代码仓库。
3. 创建项目
  在d:\trac_programs\python26\scripts目录中执行
    trac-admin e:\trac_data\sites\firstproject initenv  --inherit=e:\trac_data\sites\trac_global.ini
  在第一个提问Project Name处输入
    first project
  在第二个提问Database connection string处输入
    mysql://trac:trac@localhost/firstdb
  最后看到Congratulations!就创建成功了,然后执行
    trac-admin e:\trac_data\sites\firstproject permission add admin TRAC_ADMIN
  给admin用户赋上管理权限。
4. 集成代码库
  不要关掉前面的命令行窗口,打开一个浏览器,在浏览器里输入
    http://localhost/trac/firstproject
  点击login登录admin用户,在顶部菜单条的最后是管理菜单,点击进入,从左侧菜单的最后找到版本库功能。在右侧新增版本库的名称这里输入一个名字main,目录处输入e:\trac_data\svn_repos\firstsvn,点击增加按钮。
5. 同步代码库
  在命令行窗口中执行
    trac-admin e:\trac_data\sites\firstproject repository resync "main"
6. 添加用户
  在管理菜单中的Accounts栏有一个Users功能,在该栏中可以添加删除账户。需要注意的是目前配置中各项目间是共用账户的,如果要禁止某个账户访问项目应该通过权限控制。
  共用账户是受trac_global.ini中[account-manager]段的password_file属性控制的,如果不共用账户可以在项目的conf/trac.ini中加入自己的[account-manager]段和password_file属性。
7. 修改其它名称
  包括组件、里程碑、优先级、处理结果、严重性、任务单类型、版本等,可以按照实际项目进行设置。
  其中优先级、处理结果、严重性、任务单类型建议使用默认设置,最多将名称改为中文即可。
  至此整个系统搭建就全部完成了。

[ 本帖最后由 Maxwell 于 2010-6-8 21:15 编辑 ]


附件: 问题跟踪系统(svn+trac)的搭建.pdf (2010-6-8 21:15, 149.62 K)
该附件被下载次数 357


顶部
性别:男-离线 513633522
(小越)

Rank: 7Rank: 7Rank: 7Rank: 7
组别 校尉
级别 右将军
功绩 12
帖子 1179
编号 349592
注册 2009-12-6
家族 轩辕狼党


发表于 2010-5-28 15:17 资料 文集 短消息 只看该作者
支持……
不过看不懂


顶部
性别:男-离线 numdisp
(数值频散)

Rank: 1
组别 百姓
级别 在野武将
功绩 1
帖子 44
编号 362758
注册 2010-2-26


发表于 2010-5-28 23:46 资料 短消息 只看该作者
才发现居然是Win下的教程?
顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5795
编号 622
注册 2004-7-7


发表于 2010-5-29 07:46 资料 文集 短消息 只看该作者


QUOTE:
原帖由 numdisp 于 2010-5-28 23:46 发表
才发现居然是Win下的教程?

linux下安装这些东西比win下简单。。。会linux的装这些是小意思,然后剩下的配置文件部分就是通用的了。而且对于业余团队开发,使用win服务器的可能性还是要大于linux的。
顶部
性别:男-离线 moyanxiawei123
(默言)


Rank: 12Rank: 12Rank: 12
轩辕春秋年度最佳(轩辕工作室)
组别 羽林都尉
级别 征南将军
功绩 86
帖子 4569
编号 271179
注册 2008-3-15
来自 浙江
家族 默家派学院


发表于 2010-5-29 07:52 资料 个人空间 短消息 只看该作者
狐狸要开工了?
顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5795
编号 622
注册 2004-7-7


发表于 2010-5-29 12:26 资料 文集 短消息 只看该作者


QUOTE:
原帖由 moyanxiawei123 于 2010-5-29 07:52 发表
狐狸要开工了?

持久战持久战
顶部
性别:未知-离线 neoedmund

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 12
编号 369200
注册 2010-4-11


发表于 2010-6-11 10:16 资料 短消息 只看该作者
我有现成的svn和trac的国外主机,至少5年的租期(比较稳定), 如有需要我可以提供。
顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5795
编号 622
注册 2004-7-7


发表于 2010-6-11 11:00 资料 文集 短消息 只看该作者


QUOTE:
原帖由 neoedmund 于 2010-6-11 10:16 发表
我有现成的svn和trac的国外主机,至少5年的租期(比较稳定), 如有需要我可以提供。

如果你能提供一个链接让大家看看别人是如何使用svn和trac的最好了。也非常感谢你提供服务,是否可以让有需要的网友直接跟你联系?
顶部
性别:未知-离线 neoedmund

Rank: 1
组别 百姓
级别 在野武将
功绩 0
帖子 12
编号 369200
注册 2010-4-11


发表于 2010-6-11 11:20 资料 短消息 只看该作者


QUOTE:
原帖由 Maxwell 于 2010-6-11 11:00 发表

如果你能提供一个链接让大家看看别人是如何使用svn和trac的最好了。也非常感谢你提供服务,是否可以让有需要的网友直接跟你联系?

要看到话 code.google.com 其实是非常好的开源项目的存放地,svn, bug tracker,source review等功能都有。速度快,稳定。
但是必须要开源,其次如果有明显的著作权侵害问题的话可能被删档。

个人svn trac 有需要的话欢迎和我的id同名的gmail联系。
当然我也愿意参加业余游戏的开发。
顶部
性别:未知-离线 Maxwell

代王
监管使
枢密直学士
山南西道节度使

Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27Rank: 27
柱国(正二品)
组别 诸侯
级别 征东将军
好贴 4
功绩 1845
帖子 5795
编号 622
注册 2004-7-7


发表于 2010-6-11 11:53 资料 文集 短消息 只看该作者


QUOTE:
原帖由 neoedmund 于 2010-6-11 11:20 发表


要看到话 code.google.com 其实是非常好的开源项目的存放地,svn, bug tracker,source review等功能都有。速度快,稳定。
但是必须要开源,其次如果有明显的著作权侵害问题的话可能被删档。

个人svn t ...

对有经验的人来说,做个开源项目可选的免费管理网站有不少,不过在我面向的业余团队中,这要求有点儿高了。

版里有几个业余开发项目,你可以看看有没有喜欢的。

[ 本帖最后由 Maxwell 于 2010-6-11 12:18 编辑 ]
顶部

正在浏览此帖的会员 - 共 1 人在线




当前时区 GMT+8, 现在时间是 2024-7-3 04:03
京ICP备2023018092号 轩辕春秋 2003-2023 www.xycq.org.cn

Powered by Discuz! 5.0.0 2001-2006 Comsenz Inc.
Processed in 0.015804 second(s), 9 queries , Gzip enabled

清除 Cookies - 联系我们 - 轩辕春秋 - Archiver - WAP