2007年9月9日星期日

SVN+Trac的配置笔记

SVN+Trac的配置笔记 Published by bugx 18:30:34 一月 25th,2007 in web种种.

接上面一篇《SVN+Trac的安装》继续,今天在配置中碰到问题重重,要命的是TRAC的官方还有段时间还打不开。手册查不到,只要网上翻遍,最后还是 等到了TRAC官方能打开了,查了手册才解决了一些问题。后来碰到的一个密码验证上饶了很大的圈子,网上文章大多数是在APACHE下做的,简单不少,后 来找到台湾同胞的一篇文章比较详细,帮了大忙,豁然开朗,前前后后花了时间还真不少。

上篇中提到一个SQLLITE没有用到,后来发现有人说这个文件并不要用到,只有等pysqlite出错了才用。我还不知道怎么用呢。

一 SVN配置
我上手先配置了SVN,这个比较容易点。这里有一个很重要的要注意,TRAC和SVN都是对单个项目独立配置权限的。



进到SVN建的源码库,我这里上篇建的是project目录E:\repository\project,在conf子目录中打开svnserve.conf文件,找到如下内容:
#password-db = passwd
把前面#去掉就是启用这个配置,这个是指定密码文件,就是指定了同目录下passwd文件。文件里还有其他的配置我还没细细研究。
同样用文本文件打开passwd,就非常清楚了。密码形式以 “用户名=密码”这样的方式保存。前面的#同样去掉,这里可以自己修改,增加。
在运行里执行命令:svnserve --daemon --root E:\repository 启动了SVN服务。

实际用的时候,可以用SVNService把SVN注册为服务,COPY到Subversion\bin下注册比较方便。也可以用SC注册,但SC需要 装WINDOWS TOOLKIT才可以用。我用SVNService注册服务的时候碰到问题,没有注册成功,RP问题吧,网上好象都注册成功了。还没解决,我先把启动命令 写了BAT批处理,手动运行服务了。

现在装上客户端,怎么样连接上了吧。
SVN的高级用法,建议查看中文帮助,很详细。

二 TRAC配置

先看一下TRAC的配置文件。
E:\trac\project\conf\trac.ini

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

[attachment]
max_size = 262144
render_unsafe_content = false

[browser]
downloadable_paths = /trunk, /branches/*, /tags/*
hide_properties = svk:merge

[changeset]
max_diff_bytes = 10000000
max_diff_files = 0
wiki_format_messages = true

[header_logo]
alt =
height = -1
link = / TRAC的LOGO连接地址
src = common/trac_banner.png
width = -1

[logging]
log_file = trac.log
log_level = DEBUG
log_type = file 默认none,改为FILE。保存日志

[mimeviewer]
enscript_modes = text/x-dylan:dylan:4
enscript_path = enscript
max_preview_size = 262144
mime_map = text/x-dylan:dylan,text/x-idl:ice,text/x-ada:ads:adb
php_path = php
silvercity_modes =
tab_width = 8

[notification] 这里是自动发送通知的配置。
always_notify_owner = false
always_notify_reporter = false
always_notify_updater = true
mime_encoding = base64
smtp_always_bcc =
smtp_always_cc =
smtp_default_domain =
smtp_enabled = false
smtp_from = trac@localhost
smtp_password =
smtp_port = 25
smtp_replyto = trac@localhost
smtp_server = localhost
smtp_subject_prefix = __default__
smtp_user =
use_public_cc = false
use_short_addr = false
use_tls = false

[project]
descr = My example project
footer = Visit the Trac open source project at
http://trac.edgewall.org/";>http://trac.edgewall.org/<;/a>
icon = common/trac.ico
name = myproject
url = /

[search]
min_query_length = 3

[ticket]
default_component =
default_milestone =
default_priority = major
default_type = defect
default_version =
restrict_owner = false

[timeline]
changeset_long_messages = false
changeset_show_files = 0
default_daysback = 7 这里默认30,我感觉显示太长了,造成打开的时候机器太卡,建议7天
ticket_show_details = false

[trac]
authz_file =
authz_module_name =
base_url =
check_auth_ip = true
database = sqlite:db/trac.db
default_charset = utf-8 以UTF-8显示
default_handler = WikiModule
htdocs_location =
ignore_auth_case = false
mainnav = wiki,timeline,roadmap,browser,tickets,newticket,search
metanav = login,logout,settings,help,about
permission_store = DefaultPermissionStore
repository_dir = e:/repository/project
repository_type = svn
# request_filters =
# templates_dir =
timeout = 20

[wiki]
ignore_missing_pages = false
split_page_names = false


更详细的修改见官方的文档。


默认的TRAC上的页面匿名都可以修改的。这里需要权限的配置。
增加1个超级用户,注意路径是项目目录

trac-admin e:/trac/project permission add bugx TRAC_ADMIN
TRAC_ADMIN是一个默认的超级用户组,相当与ROOT

可以通过
trac-admin e:/trac/project permission list 列出当前的用户和权限

限制下anonymous的权限
trac-admin e:/trac/project permission remove anonymous WIKI_CREATE 等等

对多用户可以设置组,然后对组进行设置权限。
C:\Python24>python scripts/trac-admin e:/trac/project permission add developer BROWSER_VIEW CHANGESET_VIEW CONFIG_VIEW FILE_VIEW LOG_VIEW MILESTONE_VIEW
详细的命令查看http://trac.edgewall.org/wiki/TracPermissions

当我以为设置的差不多的时候,点login登陆的时候显示

Internal Error

Authentication information not available. Please refer to the installation documentation.

这个郁闷了,还没设置用户嘛。我就找了nowa的配置文件和批处理,发现他的批处理里用到了users.htdigest文件引用,这个是密码文件, apache可以生 成,我COPY过去用下,不行。很郁闷,就被我找到了台湾同胞的那个方法。其实这个方法适合Standalone 的 tracd服务,如果用APACHE,那网上很多文章都可以参考。

把下面的脚本存为 trac-digest.py并放在PYTHON14的SCRIPTS下面

from optparse import OptionParser
import md5

# build the options
usage = "usage: %prog [options]"
parser = OptionParser(usage=usage)
parser.add_option("-u", "--username",action="store", dest="username", type = "string",
help="the username for whom to generate a password")
parser.add_option("-p", "--password",action="store", dest="password", type = "string",
help="the password to use")
(options, args) = parser.parse_args()

# check options
if (options.username is None) or (options.password is None):
parser.error("You must supply both the username and password")

# Generate the string to enter into the htdigest file
realm = 'developer'
kd = lambda x: md5.md5(':'.join(x)).hexdigest()
print ':'.join((options.username, realm, kd([options.username, realm, options.password])))

中间这句
realm = 'developer'
是设定用户组的。这里建议和SVN一样
通过命令:C:\Python24>python scripts/trac-digest.py -u bugx -p 123456 >>e:\trac\trac-user.txt
可以看见在trac下建立了一个trac-user.txt的密码文档。打开内容如下:
bugx:developer:9a3e2c7267643ec735505f944643835b

在桌面上建立一个批处理,用来启动Trac。
@echo off
echo trac is now starting...
cd \
cd python24
python scripts/tracd --port 8080 --auth *,e:\trac\trac-user.txt,developer e:/trac/project
:end

--port 8080是监听端口。
--auth * 是所有的项目用相同的帐号登陆
e:/trac/project 是项目的路径。多个项目就 空格隔开

OK!启动,窗口不要关,就可以了,如果你要把这个批处理设置为服务或者放在启动文档里,也可以哦。

没有评论: