搭建svn服务步骤与权限配置

来源:互联网 发布:飞控编程用什么语言 编辑:程序博客网 时间:2024/05/20 10:21

搭建svn服务步骤:

 

一、准备工作

 

1、下载Subversion服务器端,例如:Setup-Subversion-1.8.13.msi

         下载地址:http://alagazam.net/

2、下载TortoiseSVN客户端,例如:TortoiseSVN-1.8.11.26392-x64-svn-1.8.13.msi

         下载地址:http://tortoisesvn.net/downloads

         TortoiseSVN是一个客户端程序,用来与Subversion服务器端通讯,虽然Subversion自带一个客户端程序svn.exe,但TortoiseSVN更好操作,提高效率。

 

二、安装服务器端和客户端

 

搭建svn服务第二步要安装服务器端和客户端。安装Subversion(以下简称SVN)的服务器端和客户端。

服务器端安装与配置请参考:http://blog.csdn.net/u010739973/article/details/46336555

客户端安装文件是个msi文件,直接运行按提示安装即可。

 

三、建立版本库(Repository)

 

运行Subversion服务器需要首先要建立一个版本库(Repository)。

版本库可以看作是服务器上集中存放和管理数据的地方。

开始建立版本库。首先建立D:\SVN空文件夹作为所有版本库的根目录。然后,在命令行输入如下命令:svnadmin create D:\svn\repos1,此命令在E:\svn下建立一个版本库repos1。

另外,也可以使用TortoiseSVN完成:先建立空目录E:\svn\repos1,注意一定是要空的。然后在repos1文件夹上“右键->TortoiseSVN->CreateRepositoryhere...”,

然后可以选择版本库模式,这里使用默认的FSFS即可,这样创建的版本库同命令行创建的效果相同。

 

四、运行独立服务器

 

搭建svn服务过程中要运行独立服务器。

此时subversion服务还没有启动,只是通过命令建立了版本库。继续在刚才的命令窗口输入:svnserve.exe--daemon

svnserve将会在端口3690等待请求,--daemon(两个短横线)选项告诉svnserve以守护进程方式运行,这样在手动终止之前不会退出。

注意不要关闭命令行窗口,关闭窗口会把svnserve停止。为了验证svnserve正常工作,使用TortoiseSVN->Repo- browser来查看版本库。

在弹出的URL对话框中输入:svn://localhost/svn/repos1,点OK按钮后,就可以看见repos1版本库的目录树结构了,只不过这时repos1是个空库。

你也可以使用--root选项设置根位置来限制服务器的访问目录,从而增加安全性和节约输入svnserveURL的时间:svnserve.exe --daemon- -root drive:\path\to \repository

例如,svnserve将会运行为:svnserve.exe--daemon--root e:\svn然后 TortoiseSVN中的版本库浏览器URL缩减为:svn://localhost/repos1

 

另外:可以注册SVN服务,以管理员身份运行下面命令:sc create SVN-Server binpath= "D:\Program Files(x86)\Subversion\bin\svnserve.exe --service -r D:\SVN" displayname="SVN-Server" start= auto depend= Tcpip

其中D:\Program Files (x86)\Subversion\bin\svnserve.exe 为svn的路径

F:\svn 为版本库的目录

displayname= "SVN-Server" 为设置服务的名字

--root是设置根目录 比如:原来URL为:svn://localhost/SVN

设置--root F:\SVN之后缩写为svn://localhost,一定要注意,否则Error: URL 'svn://localhost/SVN'doesn't exist。

 

五、配置用户和权限

 

用文本编辑器打开E:\svn\repos1\conf目录,修改svnserve.conf,将:#password-db=passwd改为:password-db=passwd,即去掉前面的#注释符,注意前面不能有空格。

然后修改同目录的passwd文件,增加一个帐号:格式:账号=密码

[users]

#harry=harryssecret

#sally=sallyssecret

增加帐号:

[users]

#harry=harryssecret

#sally=sallyssecret

admin=admin

 

六、初始化导入

 

将数据(项目)导入到这个版本库,以后就由版本库管理数据。

任何改动都回被版本库记录下来,甚至丢失、改错数据时版本库也能找回数据。

比如,在d:\demo下有个book文件夹,book下存放了项目代码。在此文件夹上“右键 ->TortoiseSVN->Import...”,

在弹出对话框的“URLofrepository”输入“svn://localhost/repos1/book”。在“Importmessage”输入“导入整个book项目”作为注释。

点OK后要求输入帐号。我们在用户名和密码处都输入admin。完成后book中的内容全部导入到了svn://localhost/svn /repos1/book。

注意:在D:\svn\repos1没有任何变化,连个book文件夹都没有建立,唯一的变化就是D:\svn\repos1容量变大了。

实际上源book中的内容已经导入repos1版本库了,源book文件夹可以删除了。

需要注意的是,这一步操作可以完全在另一台安装了TortoiseSVN的客户机上进行。

例如运行svnserve的主机的IP是192.168.1.99,则URL部分输入的内容就是“svn://192.168.1.99”。

 

七、基本操作流程

 

1、取出(checkout)

取出版本库到一个工作拷贝:

来到任意空目录下,比如在F盘建立一个空文件夹F:\work。“右键->SVNCheckout”。在“URLofrepository”中输入“svn://localhost/svn/repos1/book”,这样我们就得到了一份book中内容的工作拷贝。

2、存入(checkin)/提交(commit)

在工作拷贝中作出修改并提交:

在book工作拷贝中随便打开一个文件,作出修改,然后“右键->SVNCommit...”。这样我们就把修改提交到了版本库,版本库根据情况存储我们提交的数据。

在修改过的文件上“右键->TortoiseSVN->ShowLog”,可以看到对这个文件所有的提交。在不同的revision条目上 “右键->Comparewithworkingcopy”,我们可以比较工作拷贝的文件和所选revision版本的区别。

 

 

配置SVN使用权限

svnserve.conf  -------定义所有认证和授权政策

passwd -------存放项目成员帐户信息

authz -------主要是做复杂的群组权限控制

 

打开svnserve.conf文件,配置下属几个参数(原参数都为注释起来的,可以去掉前面的#,但是一定要把空格也去掉)

# anon-access = read

anon-access = none ----------表示 匿名用户没有任何权限

 

# auth-access = write             

auth-access = write ------------表示 通过认证的用户具有写的权限

 

# password-db = passwd

password-db = passwd ----------表示用户名和密码的文件是passwd 这一文件

 

# authz-db = authz

authz-db = authz ------------表示 做SVN用户和用户组的权限控制

 

打开passwd文件,配置SVN的用户名和密码,通常是以键值对的形式,但是有一点缺陷就是密码为明文。使用apache的方式可避免这一问题。

user1 = password1

user2 = password2

 

打开authz文件

首先配置用户组和用户,用户以逗号隔开

# harry_and_sally = harry,sally

# harry_sally_and_joe =harry,sally,&joe

usersgroup = user1,user2,user3 ------------配置一个用户组,包含3个用户

 

# [repository:/baz/fuz]

# @harry_and_sally = rw

# * = r

 

[mydb:/] ------------如果只需要对mydb进行管理,此配置即可。

@usersgroup = rw -------------表示usersgroup用户组有读写权限

user4 = r--------------如果想对某一用户设置特殊权限或者说是与用户组内不同权限,可以直接对其进行单独配置,也可以重新创建用户组并配置其权限

* = r -------------表示除usersgroup以为其他用户只有读的权限,如果要配置其他用户无任何权限,那么将其配置为空 即可

 

如果mydb目录下又包含了其他的许多文件,这个时候想对其内文件进行细粒度权限控制,就要增加如下进行配置:

[mydb:/source]

user5 = rw

* =

注意:如果权限保护目录为中文,则必须将authz文件利用ultraedit工具转存为UTF-8 无BOM 格式,否则权限不生效

0 0
原创粉丝点击