http://coldtear.iteye.com/blog/28440
安装Subversion
下载http://subversion.apache.org/
SVN客户端TortoiseSVN
下载http://tortoisesvn.tigris.org/
注意服务端SVN版本不能低于客户端版本
配置svnserver作为系统服务
假设 Subversion 安装在 C:/Program Files/Subversion,版本库放在了f:/svn
sc create svn binpath= "C:/Program Files/Subversion/bin/svnserve.exe --service -r f:/svn" displayname= "svn" depend= Tcpip start= auto
移除svn服务
sc delete svn
用户管理和权限配置
启动 Subversion 服务
在服务器端,打开一个命令行窗口,用CD命令进入 Subversion 安装目录下的 bin 目录
svnserve -d -r d:/svn
其中的 -d 参数表示 svnserve.exe 将会作为一个服务程序运行在后台,而 -r 参数表示将 D:/svn 目录指定为代码库的根目录.
这样,当客户端使用类似 svn://192.168.0.1/foo 这样内容的 URL 来访问服务器时候,其所访问到的真实代码库,其实就是 D:/svn/foo
建立代码库
在服务器端的 D:/svn 目录下,建立一个名为 arm 的代码库
D:/svn>svnadmin create arm
进入arm/conf 目录,这三个默认的配置文件分别是 svnserve.conf、passwd、authz(可以两个都给添加了个 conf 后缀)
编辑代码库基础配置文件
这里首先要注意一点,任何配置文件的有效配置行,都 不允许存在前置空格 ,否则程序可能会出错,给你一个 Option expected 的提示
svnserve.conf
arm/conf/svnserve.conf 文件,是 svnserve.exe 这个服务器进程的配置文件
password-db = passwd.conf(用户名与密码放在 passwd.conf 文件下)
anon-access = none(只允许经过验证的用户,方可访问代码库,可选值read write none)
auth-access = write(认证用户可以更改文件)
authz-db = authz.conf(目录访问权限的相关配置是放在 authz.conf )
passwd.conf 和 authz.conf 两个文件也可以作为多个代码库共享使用
,我们只要将它们放在公共目录下.
password-db = ../../passwd.conf
authz-db = ../../authz.conf
authz.conf 之用户分组
arm/conf/authz.conf 文件的配置段,可以分为两类,
[group]
是一类,里面放置着所有用户分组信息
。其余以
[arm:/]
开头的是另外一类,每一段就是对应着项目的一个目录,其目录相关权限
,就在此段内设置。
[groups]
# 任何想要查看所有文档的非本部门人士
g_vip = morson
# 经理
g_manager = michael
# 北京办人员
g_beijing = scofield
# 上海办人员
g_shanghai = lincon
# 总部一般员工
g_headquarters = rory, linda
# 小秘,撰写文档
g_docs = linda
authz.conf 之项目根目录
[arm:/]
@g_manager = rw
* = r
[arm:/]
表示这个目录结构的相对根节点,或者说是 arm 项目的根目录
。其中的 arm 字样,其实就是代码库的名称,即前面用 svnadmin create
命令创建出来的那个 arm
。
这里的 @ 表示接下来的是一个组名
,不是用户名.
因为目前 g_manager 组里面只有一个 michael,你当然也可以将 @g_manager = rw 这一行替换成 michael = rw ,而表达的意义完全一样。
* 表示 :"除了上面提到的那些人之外的其余所有人",那些人只能读,不能写
[arm:/diary/headquarters]
@g_manager = rw
@g_headquarters = rw
@g_vip = r
* =
* = 表示,除了经理、总部人员、特别人士之外,任何人都被禁止访问本目录。
这一行不可以省略,因为 权限具备继承性 ,子目录会自动拥有父目录的权限
,若没有这一行,则所有帐号都可以读取 /diary/headquarters 目录下的文件。
svn的权限管理涉及到一下文件:
passwd文件 -- /conf目录下 用于存放本svn库的用户名和密码,用 = 分割,左边是用户名,右边是密码(明文)。
authz -- /conf目录下 用于存放本svn库的访问授权信息。
SVNserve.conf /conf目录下 用于存放本svn库的全局访问控制信息。
最重要的是authz文件,它定义了两部分的内容:
1,对组成员的定义,
2,对目录的授权定义,
可以针对一个单一用户授权,也可以针对在[groups]里面定义的一个组授权,还可以用*通配符来对所有的用户授权,
授权的选项有:只读访问('r'),读写访问('rw'),或者无权防问('').
authz文件中可以对任意多个目录进行权限控制,一下是一个例子:
[groups]
# 注释行,定义了admin和ph两个组以及两个组的成员
admin = harry,sally
ph = hy,jim
[/foo/bar]
harry = rw
# 以*为键值意味着对所有人都进行权限控制
* =
# 以@为键值意味着对前面定义的组进行授权
@admin = rw
如果在本机用svn的一个帐户update和commite代码,并且选择了保存用户名和密码
当你准备换另一个svn的用户
来update和commite的时候就遇到麻烦了
删除掉Documents and Settings/user/Application Data/Subversion/auth/svn.simple文件夹下的文件即可
Eclipse使用SVN的过程中大多数人往往习惯把访问SVN的用户名密码自动保存起后要切换用户
1.查看你的Eclipse中使用的是什么SVNInterface
windows>preference>Team>SVN#SVNInterface
2.如果是用的JavaHL,找到以下目录并删除auth目录.
DocumentsandSettings/alex/ApplicationData/Subversion/auth/文件夹中,把里面的所有文件删除(同上)。
3.如果你用的SVNKit,找到以下目录并删除.keyring文件.
[eclipse]"configuration"org.eclipse.core.runtime