之前都是用 bugzilla 来做 bug管理.现在准备换到 Trac 上.Trac 拥有强大的 bug
管理功能,并集成 wiki 和 Subversion.还有一点,据说 Facebook 也是在用
Trac 来做bug管理 ^0^.
Bug 管理
在Trac中,项目中出现的问题称为ticket。像bug、功能改进、 TODO等都可以写成一个ticket。
1.)可设置ticket的优先级别。
2.)可以设置ticket的里程碑,表明这个ticket应在何时完成,并能够通过条形图方式显示里程碑的完成度。
3.)可以自定义条件生成bug报告,并可以通过SQL语句自定义报告的格式。
Subversion 集成
通过Subversion集成,开发者可在Trac中以Web方式浏览代码库中各个版本的代码和代码的修改历史,并可方便地比较各个版本间的差别。
Wiki
支持常用的Wiki语法。同时增加了许多bug管理的专用标记,可以方便地创建到ticket、代码行甚至修改历史的链接。
Trac使用Python写成,后台使用SQLite或PostgreSQL数据库,因此构筑一个完整的Trac系统需要安装以下软件:
Apache
Python
Subversion
PostgreSQL(可选)
Debian 下的安装很方便,我的系统是 Debian eth4
aptitude install trac apache2 subversion python swig
aptitude install mod_python python-clearsilver libapache2-svn
这样一个基本的环境就安装好了,你也可以用源码包来安装,你必须满足以下条件:
For SQLite
- SQLite,
version 2.8.x or 3.x (preferred)
- PySQLite,
version 1.x (for SQLite 2.x) or version 2.x (for SQLite
3.x). For details see
PySqlite
For PostgreSQL
For MySQL
Warning: MySQL support is currently
experimental. That means it works for some people,
but has not been tested extensively yet.
—————————————————————–
接下来就是配置了.
1,配置svn
首先创建一用户对svn权限的管理,这里我们就用 linuxlife
#groupadd linuxlife
#useradd svn -g linuxlife -s /usr/sbin/nologin
#passwd linuxlife
然后创建 svn 仓库,默认为 fsfs 文件格式
# mkdir -p /home/linuxlife/svn/
#svnadmin create /home/linuxlife/svn/my_project
chown -R linuxlife:linuxlife /home/linuxlife/svn
chmod -R g+w /home/linuxlife/svn/my_project
chmod g+s home/linuxlife/svn/my_project/db
配置 apache,apache如何配可根据系统的整理规划,只需copy添加代码就可
# vi /etc/apache2/sites-available/default
添加以下部分
### svn settings
#
<Location /svn>
DAV svn
SVNListParentPath on
SVNParentPath /home/linuxlife/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/svntrac.htpasswd
<LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
</LimitExcept>
</Location>
SVNListParentPath on
—-允许在网页上显示svn父目录list
SVNParentPath /home/svn —-/home/svn是我这边的SVN的父目录
AuthType Basic
—-连接类型设置
加了LimitExcept这样匿名用户可以浏览,check out代码,但是不能commit,
认证用户有commit权限
如果有多个仓库,可以用 svnparenpath ,如果就一个用 svnpath 即可.
# htpasswd -c /etc/svntrac.htpasswd
添加认证
接下来就是需要修改 apache 的 User 和 Group 了,在 debian 中
# vi /etc/apache2/apache2.conf
User linuxlife
Group linuxlife
改成这样既可
重启 apache 后,打开浏览器访问
http://localhost/svn 即可访问svn.
现在开始导入代码或者你需要版本控制的文件.
# mkdir /tmp/svn
# cd /tmp/svn
# mkdir {trunk,tags,branches}
svn import -m "linuxlife's project" [path] http://svn_server_address/svn/my_project
[path] 是导入的路径,不写就是当前路径
path目录下,需要建立三个目录: trunk, tags, branches (类似CVS)这不是必须的,但是这对今后的项目管理很有好处
把最初的代码放在trunk目录下!
import之后用command “svn co http://svn_server_address/svn/my_project”就该可以check
out刚才import的代码了
应该说svn和apache就处理好了!接下来就是安装配置Trac….
2.配置 trac
使用 trac-admin 命令可以初始化一个trac项目,一个 trac 项目对应一个 SVN
repository,这是应用中应该注意的.
# mkdir /home/linuxlife/trac
#trac-admin /home/linuxlife/trac/my_project initenv
然后按提示输入,记得注意是 仓库类型选 svn,仓库路径按照本例就是 /home/linuxlife/svn/my_project
trac 有2中方式提供web服务,一种是 trac 自带的 httpd 服务,一种是集成到 apache
里面,如果要用自带的 httpd ,只需这样
tracd --port 8000 /home/linuxlife/trac/my_project
这种方式很简单,但 trac 本身就不建议这样启动.我们要做的,是集成到 apache 里面去.
首先确定你的 apche 配置 cgi-bin 的路径.我的 配置例子是把这个目录正道 /var/www/cgi-bin/
这里面去了.
# cp /usr/share/trac/cgi-bin/trac.* /var/www/cgi-bin/
# vi /etc/apache2/sites-available/default
Alias /trac/chrome/common "/usr/share/trac/htdocs"
<Directory "/usr/share/trac/htdocs">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ScriptAlias /trac /var/www/cgi-bin/trac.cgi
<Location "/trac">
SetEnv TRAC_ENV_PARENT_DIR "/home/linuxlife/trac"
</Location>
<Location "/trac/*/login">
AuthType Basic
AuthName "Trac Login"
AuthUserFile /etc/svntrac.htpasswd
Require valid-user
</Location>
密码文件 svntrac.htpasswd 我们和 svn 共享,这样就只需要管理一套密码了.
保存,退出,重启 apache.再访问
http://localhost/trac
看看是不是可以得到trac的默认首页,然后点击 “browse source”, 你应该可以看到 svn
仓库里的资源.
管理Trac访问许可
Trac的许可权限管理简单而有效,它可通过 trac-admin 命令来管理.用 trac-admin
可管理用户的许可权限,但用户的管理是通过 Apache 的 htpasswd 命令设置的,根据上面的 Apache
CGI 配置,用户名和密码是存放在 /etc/svntrac.htpasswd 文件中.下面这个命令可用来列出当前有效的许可权限和已设置的许可权限.
# trac-admin /home/linuxlife/trac/svn_trac_daily permission list
User
Action
——————————
anonymous BROWSER_VIEW
anonymous CHANGESET_VIEW
anonymous FILE_VIEW
anonymous LOG_VIEW
anonymous MILESTONE_VIEW
anonymous REPORT_SQL_VIEW
anonymous REPORT_VIEW
anonymous ROADMAP_VIEW
anonymous SEARCH_VIEW
anonymous TICKET_VIEW
anonymous TIMELINE_VIEW
anonymous WIKI_VIEW
authenticated TICKET_CREATE
authenticated TICKET_MODIFY
authenticated WIKI_CREATE
authenticated WIKI_MODIFY
上面列出的内容是还没进行许可权限设置时的情况,Available actions段的内容就是有效许可权限的列表,每个权限的解析可查询TracGuide中的TracPermission节的内容。其中
TRAC_ADMIN许可相当于Linux中的root用户,拥有最高的权限。如果我们要把TRAC_ADMIN许可授予
linuxlife 用户,则可这样设置:
# trac-admin /home/trac/my_project permission add linuxlife TRAC_ADMIN
WIKI_ADMIN是WIKI系统的管理员,具有WIKI_CREATE,WIKI_DELETE, WIKI_MODIFY,
WIKI_VIEW权限。也就是WIKI页面的创建、删除、修改和查看四种权限,授予方式同上。
删除用户的许可可用remove关健字,如:
# trac-admin /home/linuxlife/trac/my_project permission remove linuxlife TRAC_ADMIN
在Trac的权限管理中可以设置组以简化权限配置,下例将设置一个admin组,具有TRAC_ADMIN许可权限,把jims和ringkee两个用户加入到该组中,使他们也具有TRAC_ADMIN许可权限:
# trac-admin /home/linuxlife/trac/my_project permission add admin TRAC_ADMIN
# trac-admin /home/linuxlife/trac/my_project permission add jason admin
# trac-admin /home/linuxlife/trac/my_project permission add jims admin
在Trac的用户中,有两个默认的用户,一个是anonymous,表示匿名用户;一个是authenticated,表示所有已通过验证的用户。我们可以把许可权赋予这两个用户,从而简化我们的许可权限配置。
备份和恢复Trac
Trac系统的备份和恢复也可使用trac-admin工具来完成,还可支持热备份。备份命令如下:
# trac-admin /home/linuxlife/trac/my_project hotcopy ~/backup
执行该命令时,Trac会自动锁住SQLite数据库,并把/home/trac/my_project目录拷贝到~/backup目录。恢复备份也很简单,只需停止Trac进程,如Apache服务器或tracd服务器。接着把~/backup整个目录恢复回/data/trac目录就可以了。
到此trac也配完了。
|