windows 系统subversion配置及权限管理
subversion配置及权限管理
1、工具准备及安装:
1)Subversion下载地址:http://subversion.tigris.org 其中setup-Subversion-1.6.31.msi为安装版本,svn-win32-1.6.3为绿色免安装版本。
Windows常用客户端TortoiseSVN下载地址:http://tortoisesvn.net/downloads
2)安装subversion和tortoiseSVN
默认安装即可。
2、安装svnservice
以前的svnserve要想成为windows服务,必须依赖于svnservice或其他工具。从Subversion1.4开始,Subversion本身就集成Windows服务的工具。
在Windows NT中(包括Windows XP, Windows 2000, Windows 2003 Server)本身包含了一个安装服务的工具,叫做"Service Control",也就是sc.exe。
例如我的Subversion安装在"D:"Subversion",版本库(资源文件存放的总目录)在"D:"svnroot",而我希望对应的Subversion服务名为svnservice,安装这个svn服务的命令就可以这样写:
在命令行窗口执行完这个命令之后,服务还没有启动,你可以继续运行"net start svnservice"启动这个服务,然后使用"net stop svnservice"停止服务。
注意:另外还有两点需要小心处理。首先,如果路径中包括空格,一定要用“"”处理“"”号,例如上面的例子中如果svnserve.exe在“c:"program files"subversion"”中,则命令应该写为“binpath= """c:"program files"subversion"bin"svnserve.exe""”(“”中的内容),整个命令如下:
其次,sc对选项的格式还有要求,例如“depend= Tcpip”不能写为“depend = Tcpip”或“depend=Tcpip”,也就是“=”前不能有空各,而后面必须有空格。
删除服务
如果服务安装的有问题,你可能需要删除服务。要删除前面添加的服务,只需要运行"net start svnservice","svnservice"就是我们创建服务时使用的名字。
3、创建资源库
方法一:多资源库:打开命令提示符,输入svnadmin create D:"svnroot " project1,回车;输入svnadmin create D:"svnroot " project2,回车...
方法二:安装好tortoiseSVN后,可以选中资源文件夹,如project1,右键,选择tortoiseSVN---create repository here即可。
资源库目录如下:
D:"SVNROOT
├─project1
│ ├─conf
│ ├─dav
│ ├─db
│ │ ├─revprops
│ │ ├─revs
│ │ └─transactions
│ ├─hooks
│ └─locks
└─project2
├─conf
├─dav
├─db
│ ├─revprops
│ ├─revs
│ └─transactions
├─hooks
└─locks
导入资源(可选操作)
例如将F:"resources下资源导入到project1中,在resources目录上右键,选择tortoiseSVN>import,之后选择D:"SVNROOT即可。
4、Subversion的权限控制
D:"SVNROOT下有两个目录project1和project2,都已经创建了版本库,所以我们修改每个conf目录下的svnserve.conf,使之指向同一个password-db和authz-db文件。
password-db = ..".."passwd
authz-db = ..".."authz
这样,D:"SVNROOT"passwd和D:"SVNROOT"authz就控制了所有版本库的svnserve访问。将任一个conf目录下的passwd和authz文件拷贝到SVNROOT目录下。
另外在后面的操作中要关闭匿名访问,应该去掉“anon-access = none”前的“#”号,保证只有认证用户可以访问。
注意:还有一点需要注意,那就是svnserve的“realm”的值,在上面的设置下,应该保证所有的版本库使用相同的realm值,这样,对版本库的密码缓存可以在多个版本库之间共享,更多细节见客户端凭证缓存。
配置用户和组说明:
假设project2目录下仍有目录111和222目录
root:配置管理管理员,对版本库有完全的管理权限
project1_a:对project1有完全权限
project1_b:同上
project1_c:同上
project2_a:对project2有完全权限
project2_b:对project2文件夹下的111目录只有读权限,对222目录没有权限
修改D:"SVNROOT"passwd文件
前面已经说过了,用户和密码文件应该是在D:"SVNROOT"passwd,所以我们为每一位用户设置权限,文件内容如下:
配置授权
修改D:"SVNROOT"authz
[groups]
# 定义组信息,左侧为组名,右侧为改组成员的用户名
group_project1 = project1_a, project1_b, project1_c
group_ project2_a = project2_a
group_ project2_b = project2_b
[/]
# 指定所有的版本库默认只读,root可读写
* = r
root = rw
[project1:/]
# 指定对版本库project1根目录的权限
@ group_project1 = rw
[project2:/]
# 指定对版本库project2根目录的权限
@ group_ project2_a = rw
[project2:/111]
# 指定对版本库project1的/111根目录的权限
@ group_ project2_b = r
[project2:/222]
# 指定对版本库project1的/222根目录的权限
@ group_ project2_b =
(注:当没有权限时,该用户将看不到次目录)
5、使用tortoiseSVN客户端工具访问
在某一个目录下右键SVN Checkout即可,路径为svn://127.0.0.1/ project1,确定后输入用户名和密码
目录 返回
首页