??xml version="1.0" encoding="utf-8" standalone="yes"?> l过q次安装Q发C载正的E序完成了工作?0%Q因为很多安装都是完全自动的Q而配|又非常的简单。本文的所有下载都是针?span style="color: rgb(255,0,0)">Subversion1.4.2Q不要搞错阿Q下面是要下载的E序Q?/p>
PythonQ?http://www.python.org/ftp/python/2.4.4/python-2.4.4.msi Python是必ȝq行环境QTrac自然要下载,Clearsilver是Trac需要的面昄框架QPysqlite是访问sqlite数据库的E序包,而svn-python是访问Subversion的程序包?/p>
首先安装PythonQ然后其他几个安装程序能够自动识别Python的安装,从而只需要按照默认安装即可?/p>
我的Python安装?#8220;D:\Python24”Q我们在D盘创Z一个目录tracQ作为trac环境存放的目录,然后?#8220;D:\Python24\Scripts”下运行(“>”后的为实际输入的内容Q后面相同)Q?/p>
D:\Python24\Scripts>..\python.exe trac-admin d:\trac initenv 然后提示输入Project的名字,我们输入自己喜欢的名字,q里我输入tractestQ回车;然后询问使用何种数据库,Z教程的简单,q里使用默认的sqlite数据库,直接回R卛_Q数据库会存攑֜环境存放的目录;然后会询问版本库的类型,默认卛_Q然后会询问版本库的路径Q在q个例子里我输入的是“d:\svnroot\project2”Q这个目录里是我的一个版本库Q然后提CZ用何U模版,回R默认卛_。最后回车,如果没有问题Qtrac配置环境徏立v来了Q现在启动服务器卛_Q运行: D:\Python24\Scripts>..\python.exe tracd --port 8000 d:\trac 然后在浏览器打开“http://localhost:8000/trac” Q如果看到有内容Q应该就是安装成功了Q恭喜! default_charset = UTF-8 则在版本库中的文本文件如果是UTF-8~码的,则其中的中文字显C非常正常,当然如果是GBKQ其实就是ISO88591Q的文gQ显C的中文是ؕ码。要惛_全解册个问题,不是单纯Trac能解决的Q需要考虑更全面的方式解决?/p>
大家如果q有什么其他需求,可以l箋探烦。其实Trac的安装过Eƈ不复杂,只是因ؓ同时要描q多U可能,所以让人摸不着头脑。在本文介绍的基上,你还可以有很多选择Q例如用MySQL数据库(要安装MySQL和MySQL的Python库)Q或者用ApacheQ需要安装Apache和对应的Python集成工具Q?/p>
1Q下载程?/h3>
TracQ?http://ftp.edgewall.com/pub/trac/trac-0.10.2.win32.exe
ClearsilverQ?http://www.clearsilver.net/downloads/win32/clearsilver-0.9.14.win32-py2.4.exe
PysqliteQ?http://initd.org/pub/software/pysqlite/releases/2.3/2.3.2/pysqlite-2.3.2.win32-py2.4.exe
svn-pythonQ?http://subversion.tigris.org/downloads/svn-python-1.4.2.win32-py2.4.exe
2, 安装E序3Q配|Trac
ȝ
1.安装CVSNT服务?2.6版的安装无法启动控制面板,报编译错?后来换成2.5版的OK? 原因未知,操作pȝwindows 2003)
2.对徏立仓?q且对CVSROOTpȝ目录q行配置.主要是用h?主要文g包括(config,admin,readers,writers,password)
3.Eclipse的CVS配置,或者用wincvs(公司用这个东?一条小fish在蹦啊蹦?
可惜我是内网代理上网,只好先在本机试下了,改天搬到公网上再试?以后我也有自q版本控制?,呵呵.
假设已经安装了WINCVS和CVSNTQƈ建立了仓库。完成了登陆和导入导出的操作?/font>
Q?span lang="EN-US">1Q管理员登陆以后把服务器中仓库的CVSROOT目录QModuleQ导出(CheckoutQ到一个工作目录,比如“admin”。具体操作见“导出模块”??xml:namespace prefix = o /?>
CVS中目录权限介l:
pȝ支持的目录权限如下:
r (d权限)
w (写入权限)
c (创徏和删除权?
n (没有M权限)
默认情况下,M用户都拥有Q何目录的所有权限?span lang="EN-US">
M情况下只有目录的拥有者和理员才有权力更改目录的使用权限。下面将会介l如何修改目录权限和目录的拥有者?span lang="EN-US">
Q?span lang="EN-US">2Q对CVSROOT目录的管理:
CVSROOT目录是在创徏仓库时有NTCVS建立的。里面包含了许多关于仓库的信息的文g?o:p>
认证口o的时候,服务器先?span lang="EN-US"> CVSROOT/passwd 文g中的用户。如果找到用P按CVS内置的权限管理方法进行认证。如果没有找刎ͼ或passwd 文g不存在,服务器将采用操作pȝ的用戯证机制。ؓ安全赯Q应该采用CVS内置的权限管理。具体方法如下:
1Q?/span> 在服务端 CVSROOT 目录下徏立文件passwdQ不建立则在d用户时自动创建)。出于安全考虑Q默认不会将 passwd列在 checkoutlist 文g里面。既从客L导出CVSROOT时不会导文g。在WINCVS中{到CVSROOT目录。点M菜单“Admin->command line”或”ctrl+ L”弹出命令行对话框。在对话框中输入增加理员的命oQ?o:p>
cvs passwd -a -r systemuser username
//建立与系l用户systemuser有相同权限的用户Q用户名为username。?o:p>
//当某个用L定的pȝ用户被删除时Q则q个用户也不能登陆?o:p>
?span lang="EN-US"> cvs passwd -a username
//建立用户名ؓusername的用?o:p>
在两ơ弹出的对话框输入密码。确认即可。这时可以看?span lang="EN-US">passwd文g多了一?/span>
Q?span lang="EN-US">
username:CUXQwLMdoZHNs:systemuser
?span lang="EN-US"> username:CUXQwLMdoZHNs
在增加管理员Ӟ应该使用W一U方法:命o为:
cvs passwd -a -r Administrator username
在实际操作中使用W一U命令。采用第二种命o增加的用h时在login时会出现不能登陆的情况(具体原因q不清楚Q?o:p>
2Q修改CVSROOT下的配置文g configQ加入一行:“ SystemAuth=no”其中no表示用passwd查用户密码权限是否正。yes 为默认?表示如果用户在passwd文g中不存在,qpȝ用户查权限是否正,q就使用了CVS内置的权限管理功能了。 ?o:p>
然后?span lang="EN-US">CVSROOT下徏立admin文g。这个文件是指定CVSNT的管理员列表的文ӞCVSNTҎq个文g来判断一个用h否是理员。文件的内容是一个用户列表。如下:
user1
user2
user3
q些代表user1,user2,user3都是理员,在此之前CVS服务器的管理员用户作ؓ自己的管理员用户的?o:p>
3Q在CVSROOT下加入文件readersQwriters来控制用Ld权限。文件每行内容与admin文g相同。格式ؓQ 用户名回R?o:p>
特别注意的是Q只有在writer文g中的用户既能dQ又能进行提交修攏V在readers中的用户只能dQ同时在两个文g中的用户只能d。在writers文g中必L理员的用户名。因为管理员在操作控制时会涉及到文件的d。对于一般用户就不要写进q两个文件了?o:p>
q样完成了?span lang="EN-US">CVSROOT目录的权限设定。不在readers和writers文g中的用户不能导出CVSROOTq个module。仅在readers文g中的用户能进行导出操作但不能q行提交修改操作。仅在writers文g中的用户能进行导出和提交修改操作?o:p>
下面讲一下不使用pȝ理员而自己徏立的理员的步骤Q?span lang="EN-US">
1Q?/font> 使用 命o cvs passwd -a -r Administrator username建立一个和Administrator有相同权限的理员用戗?o:p>
2Q?/font> ?span lang="EN-US">admin文g中添加该理员的用户名?o:p>
3Q?/font> ?span lang="EN-US">writers文g中添加该理员的用户名?o:p>
4Q?/font> ?span lang="EN-US">config 文g中添加一行代码:SystemAuth=noQ这样就不能使用Administrator而只能用自己徏立的理员进行操作了?o:p>
Q?span lang="EN-US">3Q对一般目录权限的讄
1Q?/font>
配置CVS库模块文件modules
先从客户端导入两?span lang="EN-US">module。比如test和localdir。在modules加入如下3行:
CVSROOT CVSROOT
目录1 -a localdir
目录2 -a test
W一列ؓ描述信息Q第二列为参数或I格。第三列为相对\径。如果描qC息和相对路径不同则需要参数?span lang="EN-US">-a”?o:p>
在导出模块的时候(remote->checkout moduleQ,可以点击module name and path on the server一栏旁边的?..?按钮弹出H口Q?o:p>
q样可以使客L更加方便的进行module选择?o:p>
2Q?/font>
为各?span lang="EN-US">moduleq行权限配置
module在仓库的下就是一个独立的目录。ؓmodule讄权限有两U方法。第一U是手工配置Q在module目录下有一个子目录CVSQ在里面有一个fileattr.xml文g。在未设|以前打开文g如下Q?o:p>
<?xml version="1.0" encoding="UTF-8"?>
<fileattr>
<directory>
<owner>Administrator</owner>
</directory>
</fileattr>
?span lang="EN-US"><owner></owner>之间讄目录的所有者?/span> 目录的拥有者和理员才有权力更改目录的使用权限 。目录权限未讄Ӟ所有用户对目录有除了更改目录权限以外的全部权限。在<directory></directory>之间加入以下代码表示取消所有用户对目录的的默认全部权限?o:p>
<acl>
<all deny="1" />
</acl>
?span lang="EN-US"><directory></directory>之间加入以下代码表示用户userh创徏、读写、注释的权限。目录的所有者也要通过以下代码q行权限讄?o:p>
<acl user="user">
<create />
<read />
<tag />
<write />
</acl>
加入以上代码以后文g如下Q?span lang="EN-US">
<?xml version="1.0" encoding="UTF-8"?>
<fileattr>
<directory>
<acl>
<all deny="1" />
</acl>
<acl user="user">
<create />
<read />
<write />
<tag />
</acl>
<owner>user</owner>
</directory>
</fileattr>
W二U方法是使用命o来设|,其实也是通过命o来修?span lang="EN-US">fileattr.xml文g来进行权限设|。具体方法是在WINCVS中用理员n份登陆ƈ导出要设|的module。选中moduleQ在文g信息栏显Cmodule的文件信息。打开命o行对话框输入以下命o来设|?o:p>
命o格式Q?strong>
cvs chacl [-R] [-r branch] [-u user] [-j branch] [-n] [-p priority] [-m message] [-a [no]{read|write|create|tag|control|all|none}[,...]] [-d] [file or directory...]
-a access Set accessQ设|权限)
-d Delete ACLQ删除目录的控制权限Q?o:p>
-j branch Apply when merging from branchQ合q分支时应用Q?o:p>
-m message Custom error messageQ定刉误消息)
-n Do not inherit ACL
-p priority Override ACL priorityQ不受目录权限管理)
-r branch Apply to single branchQ在单个分支上应用)
-R Recursively change subdirectoriesQ?/span>
嵌套讄权限Q对目录下每个子目录也进行相同的目录权限讄Q?span lang="EN-US">
-u user Apply to single userQ应用在单个用户Q?o:p>
例如 cvs chacl -r –a none //取消所有用L默认权限,止一切访问?o:p>
cvs chacl -R -u user -a read //讄用户user有读的权限?o:p>
通过下面的代码更改目录所有者:
cvs chown dirowner //dirowner讑֮的管理员
通过下面的代码显C目录的信息Q?span lang="EN-US">
cvs lsacl
q两U方法中Q第二种Ҏ比较单,不容易出错。但在第二种Ҏ没有效果的时候可以用W一U方法进行设|。第一U方法中的命令和以前的版本略有不同。具体见它的格式?span lang="EN-US">
以上可以完成对目录的权限设|。在模块QmoduleQ下的每一个目录下都会自动产生一个名为CVS的文件夹Q里面都有一个fileattr.xml文g用来控制目录的访问权限。方法同上?o:p>
Q?span lang="EN-US">3Q关于分l(groupQ的应用
分组Q将权限相同的用户划分到一l,q样可以方便l护。就是角色的意思,分组使用在对模块讉K权限的划分的Ҏ如下Q?span lang="EN-US">
a.在服务器?CVSROOT目录下新建文?group?o:p>
b.在文件中建立分组,group文g内容如下Q?o:p>
group1:user1 user2 user3
group2:user5 user6 user7
c.之后对组q行权限划分Q和对单个用h式一P可以ɾl内用户和组h?o:p>
同的权限Q如 选中模块Q执行如下命令可以用户 user1 user2 user3 同时h对该模块的读权限了?o:p>
cvs chacl -R -u group1 -a write
?span lang="EN-US">fileattr.xml文g中加入如下代码也可以使用?user1 user2 user3 同时h对该模块的读写:
<acl user=guoup1>
<create />
<read />
<tag />
<write />
</acl>
注意q里?span lang="EN-US">group不用" " ?/span>