本文和大家一起学习一下Windows下SVN使用手册,主要包括SVN下载,安装,建立版本库和配置权限等内容,希望通过本文的学习大家能够掌握SVN使用。
本节主要介绍一下Windows下SVN使用手册,在这里拿出来和大家分享一下,希望对大家有用,让我们一起来学习Windows下SVN使用手册吧。
一、下载
首先,请登录SVN官网http://subversion.tigris.org/下载服务端和客户端安装包。
可以根据你的需求,下载相应的发行版。如VisualSVN,其服务端是免费的,它提供了一个界面管理器,实现可视化配置管理,然而客户端却是收费的。
VisualSVNServer下载:http://www.visualsvn.com/server/download/对于大多数只进行源码版本控制的用户来说,TortoiseSVN无疑是首选。TortoiseSVN下载:http://tortoisesvn.tigris.org/
如果不嫌麻烦的话,建议使用Apatch2.x手动配置版本,你可以到该网址下载http://subversion.tigris.org/getting.html#windows
二、安装运行
将下载的svn-win32-1.5.4.zip解压到如“D:SVN”,生成bin,iconv,licenses,share等子目录,在bin下提供了很多命令行工具,如svnserve.exe、svnadmin.exe、svn.exe,使用--help可以获取帮助。
启动服务器:svnserve--daemon--root"E:svnRoot"--root"E:svnRoot"指定仓库根目录,服务器默认使用3690端口。
注册为服务:sccreateSVNServicebinpath=""D:svnbinsvnserve.exe"--service--rootD:svnRoot"displayname="SVNService"depend=Tcpip
注意这里"D:svnbinsvnserve.exe",当path中含有空格时,需要"path"包含起来。另外命令中每个等号前面不能有空格,而等号后面必须有空格,不然命令是不会被执行的,也不会报错。
客户端的安装比较简单,运行TortoiseSVN-1.5.5.14361-win32-svn-1.5.4.msi,安装后重启计算机即可。
三、建立版本库
运行Subversion服务器需要首先要建立一个版本库(Repository),可以看作服务器上存放数据的数据库,SVN使用手册有两种方法可以建立版本库:
1、命令行方法:在命令行模式下,运行svnadmincreated:svnRootvwas,即可在d盘下创建一个版本库vwas。通常我们选用该方法。注意:版本库必须创建到根目录d:svnRoot,否则无法查找。(因为subversion对版本库采用子目录管理方法)
2、界面操作方法:在d:svnRoot目录下,右键,选择TortoiseSVN下的“在此创建文件库”,文件库类型选择默认的“本地文件系统(FSFS)”,这样就会在该目录下创建一个版本库。(需要在服务器上安装TortoiseSVN)repository创建完毕后会在目录下生成若干个文件和文件夹,dav目录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部数据;db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;locks用来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端;format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号;
四、配置权限
SVN使用手册介绍配置权限问题。注意:subversion修改配置后无须重启服务。
进入版本库如d:svnRootvwasconf,有三个配置文件svnserve.conf、passwd、authz,修改时必须去掉#和前面的空格,否则会报错,=号两边允许空格。
svnserve.conf文件内容如下:(svnserve默认使用这些配置)
[general]
#anon-access=read(这两句是总纲,控制匿名用户的权限,既使authz中使用*=rw也无法打破,实际应用中这里可能设置为none,禁止匿名用户进行任何访问)
#auth-access=write
#password-db=passwd
#authz-db=authz
#realm=MyFirstRepository
各参数定义如下:
anon-access:定义非授权用户的访问权限,有三种方式:none、read、write,设置为none限制访问,read为只读,write为具有读写权限,默认为read。
auth-access:定义授权用户的访问权限,有三种方式:none、read、write,设置为none限制访问,read为只读,write为具有读写权限,默认为write。
password-db:定义保存用户名和密码的文件名称,这里为passwd,和该文件位于同一目录。
authz-db:定义保存授权信息的文件名称,这里为authz,和该文件位于同一目录。
realm:定义客户端连接是的“认证命名空间”,Subversion会在认证提示里显示,并且作为凭证缓存的关键字。
subversion按版本目录来进行管理,只有在根目录下存在版本库目录,版本库才有效,如必须存在d:svnRootvwas,svnlistsvn://localhost/vwas才能执行成功。版本库conf下必须存在svnserve.conf,为了方便的进行多库管理,可以让所有版本库共用统一的用户和权限文件。
password-db=../../passwd将passwd放到svnRoot根目录,统一管理所有用户
authz-db=../../authz
passwd文件内容如下:
- [users]
- #harry=harryssecret
- #sally=sallyssecret
- 这里定义了两个用户harry和sally,用户密码分别是harryssecret和sallyssecret。同样,我们还可以定义自己的用户名和密码。如下面添加guest用户,密码空guest=
- authz文件内容如下:
- [groups]
- #harryharry_and_sally=harry,sally
- #[/foo/bar]
- #harry=rw
- #*=
- #[repository:/baz/fuz]
- #@harry_and_sally=rw
- #*=r
这里定义了组harry_and_sally,组在引用时需要@组名,*表示所有用户,包括匿名用户。使用组的好处是,往往在实际应用中,同一个仓库或目录并不只是一个用户访问,通常我们将用户编成dev开发组、test测试组、man管理组,doc文档组,分别进行权限分配,如
- [vwas:/]
- *=
- [vwas:/doc]
- @man=rw
- @doc=rw
- @dev=r
- @test=r
- [vwas:/srv]
- @dev=rw
- @test=r
- [vwas:/test]
- @test=rw
subversion按照[仓库名:目录]的格式进行权限分析,忽略仓库名时,如[/]表示对所有的版本库生效。由于设计subversion的大佬们习惯linux,到了windows下,他们仍然使用"/"来标识子目录。
尤其需要注意的是:
子目录继承父目录的访问权限,如果指定了管理员对根目录具有读写权限,则管理员对子目录也具有读写权限。
权限规则没有优先级,采用“|”“&“的方式进行。
但是,如果在子目录中设置*=来割断对父目录权限的继承,则子目录中必须设置管理员权限为rw,下面这种设置是有问题的:
[arm:/]
qianxin=rw
[arm:/diary/shanghai]
dai=rw
gongyu=rw
*=(这句表示割断除dai和gongyu以外所有用户的权限)请期待下节SVN使用手册介绍。