基于 Debian 的 Subversion Trac

来源:百度文库 编辑:神马文学网 时间:2024/05/01 06:08:15
基于 Debian 的 Subversion+Trac
2008-11-21 来源:linuxlife.cn
之前都是用 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
这样一个基本的环境就安装好了,你也可以用源码包来安装,你必须满足以下条件:
Python, version >= 2.3.
ClearSilver, version >= 0.9.3
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
PostgreSQL
psycopg2 orpyPgSQL
For MySQL
Warning: MySQL support is currently experimental. That means it works for some people, but has not been tested extensively yet.
MySQL, version 4.1 or later
MySQLdb, version 1.2.1 or later
Note: MySQL support requires Trac version 0.10 or later.
Subversion, version >= 1.0. (either 1.2.3 or >= 1.3.1 recommended)
Web Server
A CGI-capable web server (see TracCgi), or
aFastCGI-capable web server (see TracFastCgi), or
Apache withmod_python 3.1.3+ (see TracModPython) When installing mod_python the development versions of Python and Apache are required (actually the libraries and header files)
—————————————————————–
接下来就是配置了.
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
#

DAV svn
SVNListParentPath on
SVNParentPath /home/linuxlife/svn
AuthType Basic
AuthName "Subversion Repository"
AuthUserFile /etc/svntrac.htpasswd

Require valid-user


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
改成这样既可
# apache2 -k restart
重启 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/ 这里面去了.
所以需要 copy 两个文件到这个目录下.
# cp /usr/share/trac/cgi-bin/trac.* /var/www/cgi-bin/
接着修改 apache 配置
# vi /etc/apache2/sites-available/default
添加以下内容
Alias /trac/chrome/common "/usr/share/trac/htdocs"

Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all

ScriptAlias /trac /var/www/cgi-bin/trac.cgi

SetEnv TRAC_ENV_PARENT_DIR "/home/linuxlife/trac"


AuthType Basic
AuthName "Trac Login"
AuthUserFile /etc/svntrac.htpasswd
Require valid-user

密码文件 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也配完了。