SVN ADMIN 手册
用于Svn Admin 1.0
1. 简介
1.1. 什么是Svn Admin
Svn Admin是一个Java开发的管理Svn服务器的项目用户的web应用。安装好Svn服务器端好,把Svn Admin部署到Tomcat,就可以通过web浏览器管理Svn的项目,管理项目的用户,管理项目的权限。使得管理配置Svn简便,再也不需要每次都到服务器手工修改配置文件。
1.2. 有什么优点
u Svn项目配置数据保存在数据库,支持所有数据库(默认MySQL/Oracle/SQL Server)
u 权限控制:管理员可以随意分配权限、项目管理员可以管理项目成员、成员只能查看和修改自己的密码。这样就可以把项目SVN配置管理交给项目经理,和项目成员。
u 支持多项目、多用户、多用户组Group(默认带有“项目管理组”、“项目开发组”、“项目测试组”)
u 安全:登录密码使用MD5加密,每个项目成员的密码使用自带的算法加密
u 操作简单
1.3. 是否适合你
Svn的配置信息都在仓库目录的conf下的authz,passwd,svnserve.conf三个文件中,配置用户和权限都是通过修改passwd和authz,立刻就生效。Svn Admin的本质是对这3个文件进行管理,所有成员、权限的数据都保存在数据库中,一旦在Svn Admin的页面上修改,就会把配置信息输出到conf下的那3个配置文件中。
假如你不是svn管理员,或配置不是使用上述方式,你可以忽略下文。
2. 安装运行
2.1. 安装Svn服务器端
如果这个你还没有安装好,那你先抽根烟,忽略下文。
2.2. 安装Java 运行环境
这个简单吧?不会,上网搜索一下:)
2.3. 安装Tomcat 6
哈哈,不用我教。要我教,那你真要请我吃饭了^_^
2.4. 初始化svnadmin数据库
假定你已经安装好数据库,在数据库中创建一个名为svnamdin的数据仓库,使用客户端工具连接上数据库。在发行包db目录中找到对应的数据库建表脚本,如MySQL数据库对应的是mysql5.sql,执行里面的sql,就建好svnadmin的表结构。
2.5. 运行
在发行包中找到svnadmin.war文件,修改里面的WEB-INF\jdbc.properties数据库连接信息。
例如你的数据库是MySQL51,服务器IP是192.168.1.100,请修改红色标明的配置信息:
#指定当前连接数据库
db=MySQL51
#MySQL51
MySQL51.jdbc.driver=com.mysql.jdbc.Driver
MySQL51.jdbc.url=jdbc:mysql://192.168.1.100:3306/svnadmin?characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
MySQL51.jdbc.username=root
MySQL51.jdbc.password=abc123
修改好配置文件后,把svnadmin.war复制到%Tomcat%/webapps目录下,启动Tomcat,假如你的Tomcat端口是8080,在浏览器中输入http://192.168.1.100:8080/svnadmin,出现登录页面。说明你安装成功。
3. 实例
3.1. 需求
假定你有一个jar类型的Eclipse Java项目projar,假定你已经在SVN服务器192.168.1.100创建好了这个SVN仓库(使用svnadmin create命令创建svn仓库,参考svn手册),目录在服务器192.168.1.100的D:/repository/projar,访问这个仓库的svn地址是:svn://192.168.1.100/projar,你的项目目录分配如下:
projar
|___branches
|___tags
|___trunk
|____.project
|____.classpath
|____bin
|____src
|____*.java
假定项目经理是Tom,有一个开发人员Ben,一个测试人员Kent。你希望Tom有管理这个项目目录的所有权限;Ben可以检出trunk目录,但只能对trunk/src/目录进行写的权限;Kent只能读项目的tags,检出发行版本进行测试。
3.2. 登录
浏览器打开http://192.168.1.100:8080/svnadmin
登录页面
第一次使用,输入的帐号和密码是超级管理员

如输入帐号svnamdin,密码svnamdin,点击【登录】,进入首页。

3.3. 项目管理
输入项目的基本信息,如下:

【路径】是指服务器svn仓库的路径;【URL】主要是给成员查看;【父项目】请参考【高级用户】章节。其它信息随意。
点击【提交】后如下:

3.4. 用户资料
点击【用户资料】

输入Tom信息,点击【提交】如下:
![]()
同理:(此处省略一页字,汗!!!)分别添加用户kent和ben。
密码已经加密保存在数据库,结果如下:

用户就设置完成了!!!
此时这3个账户已经具备默认的登录等权限,可以登录到svn admin修改自己的资料。(参考【高级用户】-【权限管理】章节)
3.5. 用户组管理
点击【项目管理(projar)】或右上角的【项目】菜单,返回项目页面
![]()
点击【设置用户组】,进入如下

点击第一行developer的【设置用户】

在下拉框中选择kent,点击【增加用户】,结果如下

点击【用户组管理(projar_developer)】,返回用户组设置页面
同理:(此处省略一页字,汗!!!)分别添加tom到管理员组manager,添加kent到测试组tester。
把Tom添加到管理组【projar_manager】后,Tom已经具备默认的项目管理等权限,可以登录到svn admin修改项目资料、自己的用户资料和项目成员的资料。(参考【高级用户】-【权限管理】章节)
3.6. 设置目录权限
下面设置目录权限,点击【项目管理(projar)】或右上角的【项目】菜单,返回项目页面
![]()
点击【设置权限】,进入如下

3.7. 设置管理组权限
输入如下信息:
【资源】:[/] 表示项目的根
【用户组】:projar_manager
【权限】:可读可写
点击【增加】

3.8. 设置开发组的权限
输入如下信息:
【资源】:[/trunk]
【用户组】:projar_developer
【权限】:可读
点击【增加】

输入如下信息:
【资源】:[/trunk/src]
【用户组】:projar_developer
【权限】:可读可写
点击【增加】

3.9. 设置测试组的权限
输入如下信息:
【资源】:[/tags]
【用户组】:projar_tester
【权限】:可读
点击【增加】

结果如下:

项目经理Tom使用svn://192.168.1.100/projar检出整个项目,并有读写的权限;
开发人员Ben使用svn://192.168.1.100/projar/trunk检出项目的trunk目录,可以对trunk/src读写,但对trunk/.project等只能有读的权限;
测试人员Kent使用svn://192.168.1.100/projar/tags检出项目的tags版本目录,只可以读,不能写。
关于svn目录的权限的设置技巧,已经超出本文的讨论范围,请参考svn管理的相关文档。
4. 高级用户
4.1. 输出配置文件
对于以上的例子,查看服务器192.168.1.100的D:/repository/projar/conf目录
4.1.1. svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
[sasl]
4.1.2. passwd
[users]
### Ben
ben=ben
### Kent
kent=kent
### Tom
tom=tom
4.1.3. authz
[aliases]
[groups]
projar_developer=ben
projar_manager=tom
projar_tester=kent
### ====================== Start projar
[/]
@projar_manager=rw
[/trunk]
@projar_developer=r
[/trunk/src]
@projar_developer=rw
[/tags]
@projar_tester=r
### ====================== End projar
如果你要设置 *=
输入如下信息:
【用户组】:不选!
【用户】:*
【权限】:没有权限

4.2. 导入导出项目配置信息
你懂的!
可能你有很多项目,在页面上输入数据太麻烦,可以根据表结构,使用数据库到导入导出,批量插入数据到数据库里。
然后,只要在svn admin页面随意修改一下项目的配置信息,即可把数据库的数据输出到svn 服务器配置文件。
如在【项目管理】点击【提交】,触发修改项目信息的动作,会立刻把数据库的配置输出到配置文件。(你总要点一下,我才知道要重新输出配置把,呵呵!)

4.3. 权限管理
右上角菜单【登录帐户】进入【帐号管理】

点击【权限】进入【权限管理】,权限下拉框有系统提供的选项

u 项目成员默认权限:登录,帐号管理,帐号管理-提交,帐号管理-修改密码,项目管理
u 项目管理员默认权限:登录,帐号管理,帐号管理-提交,帐号管理-修改密码,项目管理,项目管理-修改,项目管理员
管理员可以分别修改每个帐号的权限,也可以使用通配符*,例如fun_*代表fun_开头的所有权限。超级管理员的权限就是*。
4.4. 登录账户和项目用户
登录账户和密码是指登录到svn admin的凭证;项目用户和密码是指svn项目配置文件中的凭证,用于svn的check out等操作。两者可以不一样。
添加项目用户资料时,如果此时登录账户中还没有存在同名的账户信息,会自动地往账户表中添加,并配置默认的权限。此时,登录账户 == 项目用户。
添加项目用户资料时,如果此时登录账户中存在同名的账户信息,则不会对登录账户信息做任何更新。此时,登录账户 != 项目用户。
修改登录账户的密码,并不会对项目用户的密码有影响。同理,修改项目用户的密码,并不会对登录账户的密码有影响。
这样,就可以设置有些成员只有登录svn admin权限,不一定具有项目成员检出svn项目的权限;或可以禁止项目成员登录svn admin,但依然可以检出svn的项目。
4.5. 父项目
父项目的所有子项目共享父项目的用户资料,但子项目可以设置不同的用户组和目录权限。

适合这样结构的项目:
parent_project
|___child_project_1
||___branches
||___tags
||___trunk
| |____.project
||____.classpath
||____bin
||____src
| |____*.java
|
|___child_project_2
|___branches
|___tags
|___trunk
|____.project
|____.classpath
|____bin
|____src
|____*.java
5. 附录
5.1. 数据库表结构
以MySQL数据库为例

5.2. 联系方式
联系方式
QQ :56099823
Email:yuanhuiwu@gmail.com
2011-07
来源:http://yuanhuiwu.iteye.com/blog/1131681
本日志由 flyinweb 于 2011-08-01 15:34:00 发表,目前已经被浏览 1068 次,评论 0 次;
引用通告:http://www.517sou.net/Article/642/Trackback.ashx
而且直接配置文件是效率最高的,通过其它驱动效率都相对较低,BDB
这个测试不太准确,看官方的测试结果:http://bind-dlz.sourceforg
为什么使用BDB时QPS这么低? 我在bind版本基本相似的环境中测试的
It is quite useful and interesting too.
VIRT 的上限是64G,也就是36位, cat /proc/cpuinfo的结果是:addre
昨天要准备用线程重写webbench,试验了下Fedora Linux 2.6.35.14
不明白您的具体的意思是什么?
已经发送到你QQ邮箱