SVN 管理员使用指南目录1Subversion简介 (1)1.1Subversion简介 (1)1.2Subversion架构 (2)1.3Subversion组件 (3)1.4Subversion基本流程 (3)2安装SVN 服务 (4)2.1安装SVN和TortoiseSVN (4)2.2创建SVN资源库 (4)2.3创建SVNserver服务 (5)2.4运行SVNserver服务 (6)3用户及权限管理 (6)3.1用户管理 (7)3.2权限管理 (7)4SVN基本使用 (9)4.1导入/导出(import/export) (9)4.2初始化检出(checkout) (10)4.3更新修改(update) (10)4.4查看日志信息(show log) (10)4.5取消修改(revert) (10)4.6提交修改(commit) (10)4.7合并信息(merge) (10)4.8创建/删除/重命名 (10)4.9加锁/释放锁(get/release lock) (10)4.10添加、删除、重命名(add、delete、rename) (10)4.11拷贝(copy) (13)4.12查看修改信息(check for modifications) (13)4.13分支/标记(branch/tag) (13)4.14创建并应用补丁(create/apply patch) (15)4.15备份/恢复资源库 (17)4.16删除资源库 (19)4.17版本(revision)关键字 (19)4.18统计信息(statistics) (20)4.19禁用密码缓存 (21)5TortoiseSVN设置 (21)5.1常规设置(General) (23)5.2图标叠加(Icon overlays) (27)5.3网络设置(network) (29)5.4日志缓存设置(log caching) (30)5.5钩子脚本设置(Hook Scripts) (32)5.6外部程序设置(external programs) (32)6TortoiseSVN基本命令 (37)6.1Svn子命令 (37)6.2Svnadmin (38)6.2.1Svnadmin Switches (39)6.2.2Svnadmin Subcommands (39)6.3Svnlook (40)6.3.1Svnlook选项 (40)6.3.2Svnlook (41)6.4Svnserve (41)6.4.1Svnserve选项 (41)6.5Svnversion (42)6.5.1Svnversion选项 (42)1 Subversion简介1.1 Subversion简介Subversion是一个自由/开源的版本控制系统。
在Subversion管理下,文件和目录可以超越时空,即Subversion允许数据恢复到早期版本,或者是检查数据修改的历史。
Subversion的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。
从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。
因为修改不再是单线进行,开发速度会更快。
此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量。
它是一个通用系统,可以管理任何类型的文件集。
1.2 Subversion架构服务器端保存所有版本数据的Subversion版本库,本地端是Subversion 的客户程序,管理所有版本数据的本地映射(工作拷贝),两端之间是各种各样的版本库访问(RA)层,可以使用网络服务(Apache/svnserve)访问版本库,也可以绕过网络服务器直接访问版本库。
1.3 Subversion组件1.4 Subversion基本流程1) 初始化取出(checkout)版本库(repos),建立本地工作拷贝(WorkingCopy)。
2) 与repos同步(update),保证将要进行的编辑是最新版本。
3) 编辑源代码(包括创建、修改、删除)。
4) 与repos同步(update),提交(commit)之前先要同步到最新的版本,保证所有在自己之前的有关提交已经在本地有所知晓。
5) 解决冲突(resolve conflict)。
6) 提交(commit),建议写上这次提交或变更内容的摘要,便于以后查阅。
7) 再次执行步骤2)。
每次开始新的编辑前的同步repos很重要,另外经常地update,特别是多人项目中。
如果每次提交(commit)前不进行更新(update)的到最新的版本的话,svn会提示当前的拷贝过期,需要更新。
2 安装SVN 服务2.1 安装SVN和TortoiseSVN下载SVN服务器安装文件:svn-1.4.6-setup.exe下载客户端安装文件:TortoiseSVN-1.6.5.16974-win32-svn-1.6.5,然后运行安装,安装成功后必须重启计算机。
也可以根据需要加载中文语言包(不建议使用)。
在任意位置点击右键,出现下面图示即表示TortoiseSVN安装成功。
2.2 创建SVN资源库SVN资源库的创建有两种方式:命令行方式和客户端方式。
✓命令行方式:svnadmin create D:\svn\repos(注意目录路径名区分大小写)✓客户端方式:通过TortiseSVN来创建,在本地新建目录D:\svn\repos,选中文件夹repos,右击“TortoiseSVN——Create repository here”库类型选择默认的FSFS,创建成功后会在D:\svn\repo目录下出现若干文件和文件夹,可以看到三个配置文件authz,passwd,svnserve.conf。
其中svnserve.conf为服务配置文件(存放全局访问控制信息),passwd为访问资源库的认证文件,authz 为认证后的账户访问权限授权文件,可根据需要进行添加和授权。
后面在用户及权限管理处会详细介绍。
2.3 创建SVNserver服务运行cmd命令输入:sc create svnserve binpath= "C:\Subversion\bin\svnserve.exe --service --root D:\svn\repos"displayname= "svnserve" depend= tcpip start= auto上述命令可以实现名为“svnserve”服务的后台创建和自动启动。
2.4 运行SVNserver服务有两种方式运行svnserver服务:✓Cmd命令行输入:net start svnserve(停止svnserver服务用:NET STOP svnserve;删除svnserver服务用:net delete svnserve)✓控制面板—管理工具—服务:启动“svnserve”服务3 用户及权限管理在Subversion的使用当中,存在“认证”、“授权”两个概念。
认证,即authentication,是指用户名与密码的认证。
授权,即authorization ,是指某用户对某个目录是否具备读、写权限的一种审核。
这两者配合作用,就组成了Subversion的整个账户管理体系。
为了使用用户及权限管理功能文件,必须在服务器端打开D:\svn\ repos\conf\svnserver.conf,去掉下面四行前面的注释,并去掉前面的空格:# anon-access = read# auth-access = write# password-db = passwd# authz-db = authz并将read参数修改为none,表明禁止匿名用户访问版本控制库。
注意:权限配置文件中出现的用户名必须已在用户配置文件中定义。
对权限配置文件的修改立即生效,不必重启svn。
为了实现多项目的权限管理,多个项目共享相同的位于根资源库下的配置及认证文件。
3.1 用户管理资源库创建后,出现的passwd文件为访问资源库的认证文件(用户名和密码),即在此文件夹下可以添加、删除用户打开D:\SVNServer\repos\conf\passwd,添加用户admin、sc1/sc2、tom1/tom2,并设置相应的密码:[users]# harry = harryssecret# sally = sallyssecretadmin = 1234sc1 = 1234sc2 = 1234tom1 = 1234tom2= 12343.2 权限管理Subversion 提供了面向目录的账户权限管理功能,通过它,我们就可以很精确地实现项目目录的访问控制。
创建完资源库后,出现的authz为认证后的账户访问权限授权文件。
假设目录结构如下:Projectdevtesttest1test2要求:1、admin对所有目录可读可写2、Dev_group对dev目录可读可写,Test_group无权限3、Test_group对test目录可读可写,Dev_group无权限打开D:\SVNServer\ repos\conf\authz,对上面的用户添加分组:[groups]# harry_and_sally = harry,sallyAdmin_group = adminDev_group = sc1,sc2Test_group1 = tom1, tom2[/] //对根目录的权限控制@admin_group = rw* = r[/Cloud /dev] //对具体目录的权限控制@ admin_group = rw@ Develop_group = rw* = //其他用户无权限[/Cloud/test] //对具体目录的权限控制@ admin_group = rw@ Test_group = r* =备注:1、如果需要控制的文件夹为中文名称,需要把authz转换为UTF-8格式,建议使用UltraEdit的“文件——转换——ASCII to UTF-8”(我尝试过记事本转换未遂)。
2、若project下新增文件夹,一定要对新文件夹增加权限控制,否则所有人默认为可读。
4 SVN基本使用4.1 导入/导出(import/export)svn import是将未版本化文件导入版本库的最快方法。
具体使用方法举例:创建文件夹D:/ project1,project1文件夹下分别创建三个文件夹trunk,tags,branches,右键打开repository-browser,在URL中输入project1所在路径,然后点击ok即可成功导入数据至版本库,截图如下。