SVN管理员使用指南(共45页).doc





《SVN管理员使用指南(共45页).doc》由会员分享,可在线阅读,更多相关《SVN管理员使用指南(共45页).doc(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上SVN 管理员使用指南专心-专注-专业目 录1 Subversion简介1.1 Subversion简介Subversion是一个自由/开源的版本控制系统。在Subversion管理下,文件和目录可以超越时空,即Subversion允许数据恢复到早期版本,或者是检查数据修改的历史。Subversion的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。因为修改不再是单线进行,开发速度会更快。此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量。它是一个通用系统
2、,可以管理任何类型的文件集。1.2 Subversion架构服务器端保存所有版本数据的Subversion版本库,本地端是Subversion的客户程序,管理所有版本数据的本地映射(工作拷贝),两端之间是各种各样的版本库访问(RA)层,可以使用网络服务(Apache/svnserve)访问版本库,也可以绕过网络服务器直接访问版本库。1.3 Subversion组件svn 命令行客户端程序svnversion 显示工作拷贝的状态(用术语来说,就是当前项目的修订版本)svnlook 直接查看Subversion版本库的工具svnadmin建立、调整和修复Subversion版本库的工具svndum
3、pfilter过滤Subversion版本库转储数据流的工具mod_dav_svnApache HTTP服务器的一个插件,使版本库可以通过网络访问svnserve一个单独运行的服务器程序,可以作为守护进程或由SSH调用。这是另一种使版本库可以通过网络访问的方式svnsync一个通过网络增量镜像版本库的程序1.4 Subversion基本流程1) 初始化取出(checkout)版本库(repos),建立本地工作拷贝(Working Copy)。2) 与repos同步(update),保证将要进行的编辑是最新版本。3) 编辑源代码(包括创建、修改、删除)。4) 与repos同步(update),提
4、交(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 下载客户端安装文件:Torto
5、iseSVN-1.6.5.16974-win32-svn-1.6.5,然后运行安装,安装成功后必须重启计算机。也可以根据需要加载中文语言包(不建议使用)。在任意位置点击右键,出现下面图示即表示TortoiseSVN安装成功。2.2 创建SVN资源库SVN资源库的创建有两种方式:命令行方式和客户端方式。 命令行方式:svnadmin create D:svnrepos(注意目录路径名区分大小写) 客户端方式:通过TortiseSVN来创建,在本地新建目录D:svnrepos,选中文件夹repos,右击“TortoiseSVNCreate repository here”库类型选择默认的FSFS,
6、创建成功后会在D:svnrepo目录下出现若干文件和文件夹,可以看到三个配置文件authz,passwd,svnserve.conf。其中svnserve.conf为服务配置文件(存放全局访问控制信息),passwd为访问资源库的认证文件,authz为认证后的账户访问权限授权文件,可根据需要进行添加和授权。后面在用户及权限管理处会详细介绍。2.3 创建SVNserver服务运行cmd命令输入:sc create svnserve binpath= C:Subversionbinsvnserve.exe -service -root D:svnrepos displayname= svnserv
7、e 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,是指用户名与密码的认证。授权,即a
8、uthorization ,是指某用户对某个目录是否具备读、写权限的一种审核。这两者配合作用,就组成了 Subversion 的整个账户管理体系。为了使用用户及权限管理功能文件,必须在服务器端打开D:svn reposconfsvnserver.conf,去掉下面四行前面的注释,并去掉前面的空格:# anon-access = read# auth-access = write# password-db = passwd# authz-db = authz并将read参数修改为none,表明禁止匿名用户访问版本控制库。注意:权限配置文件中出现的用户名必须已在用户配置文件中定义。对权限配置文件的
9、修改立即生效,不必重启svn。为了实现多项目的权限管理,多个项目共享相同的位于根资源库下的配置及认证文件。3.1 用户管理资源库创建后,出现的passwd文件为访问资源库的认证文件(用户名和密码),即在此文件夹下可以添加、删除用户打开D:SVNServerreposconfpasswd,添加用户admin、sc1/sc2、tom1/tom2,并设置相应的密码:users# harry = harryssecret# sally = sallyssecret admin = 1234 sc1 = 1234 sc2 = 1234 tom1 = 1234 tom2= 12343.2 权限管理Subv
10、ersion 提供了面向目录的账户权限管理功能,通过它,我们就可以很精确地实现项目目录的访问控制。创建完资源库后,出现的authz为认证后的账户访问权限授权文件。假设目录结构如下:Projectdevtesttest1test2要求:1、 admin对所有目录可读可写2、 Dev_group对dev目录可读可写,Test_group无权限3、 Test_group对test目录可读可写,Dev_group无权限打开D:SVNServer reposconfauthz,对上面的用户添加分组:groups# harry_and_sally = harry,sally Admin_group = a
11、dmin Dev_group = sc1,sc2 Test_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”(我尝试过记事本转换未遂)
12、。2、 若project下新增文件夹,一定要对新文件夹增加权限控制,否则所有人默认为可读。4 SVN基本使用4.1 导入/导出(import/export)svn import是将未版本化文件导入版本库的最快方法。具体使用方法举例:创建文件夹D:/ project1,project1文件夹下分别创建三个文件夹trunk,tags,branches,右键打开repository-browser,在URL中输入project1所在路径,然后点击ok即可成功导入数据至版本库,截图如下。注:一个项目的生存周期不是单线的,常常有一些分支、发布版或者特定功能的实验性加入等事件,repos的布局需要进行一定
13、设计来支持这些“事件”。常见的布局是这样的:trunk是项目主体存放位置,branches是项目的各种分支的存放,tags用于公开发布的版本的存档,类似与milestone。这是一般的svn项目中的repos布局。Export操作则相反,在版本库中选择要导出的文件,右键export,选择导出到本地的路径,点击ok即可。4.2 初始化检出(checkout)4.3 更新修改(update)4.4 查看日志信息(show log)4.5 取消修改(revert)4.6 提交修改(commit)4.7 合并信息(merge)4.8 创建/删除/重命名4.9 加锁/释放锁(get/release lo
14、ck)章节4.24.9具体操作可以参考TortoiseSVN使用指南V1.0.doc4.10 添加、删除、重命名(add、delete、rename) 以添加一个文件为例,在本地版本库受控环境中新建一个文件0.doc,按照图示进行操作:图标变为下图所示,标明该文件已经被加载入了版本库,但是没有执行commit:右键svn commit,提交至版本库。图标变为绿色对勾,至此该文件已经被成功添加至版本库中。4.11 拷贝(copy)可以拷贝至本地目录,也可以拷贝至上面界面中的其他目录。4.12 查看修改信息(check for modifications)在受控版本库环境中右键TortoiseSV
15、N- check for modifications,可以查看当前文件或文件夹的修改历史信息。4.13 分支/标记(branch/tag)实际也是svn copy操作,首先要把需要打标签的或者做版本标记的文件checkout到本地,右键TortoiseSVN- branch/tag,输入版本的标记及存放路径即可。就可将整个目录分支(branch)出去。或点击某个文件将文件单独分支(branch)。界面上出现三个选项: head revision in the repository:新分支直接从仓库中的最新版本里复制出来。不需要从你的工作副本中传输任何数据。 Specific revision
16、in repository:可以在版本库中选择具体的revision,直接在服务器端copy指定版本。 Working Copy:新分支是一个当前的工作副本的完全拷贝。如果想把工作副本自动切换到最新创建的分支,使用“转换工作副本至新分支/标记”选择框。但是首先要确认你的工作副本没有被修改,如果有修改的话,当你转换后这些修改将会混合进你的工作副本分支里。一般选择head revision对版本进行打标签操作,执行完毕可以在相应的路径下看到新标签(也可以给一个版本打版本号标签V1.0等): 如果你想要在一个已经标记的发布版上做更多的修改。正确的操作方法是先从标记处建立一个新分支然后提交这个分支。在
17、这个分支的基础上进行修改后再从这个新分支上建立一个新标记,例如Version_1.0.1。 如果你修改了一个从分支建立的工作副本然后又提交了这个副本,那么所有的修改会转到一个新分支里而不是主干,仅仅是存储了修改的数据。4.14 创建并应用补丁(create/apply patch) 补丁文件只是简单地用统一的差异描述文件显示出你的工作副本和基线版本的不同点。由于对于一个项目的代码,任何开发人员可能都具备读写的权限,这个代码可能永远都会处于不稳定状态,而且很有可能永远的瘫痪下去。在这种情况下,修改需要以补丁文件的形式先递交到有写访问权限的开发组。开发组可以先对该补丁文件进行审查,然后决定将其提交
18、到仓库里或者是退还给具体的开发人员。 首先对checkout到本地的初始副本进行修改,假设修改了2个文件,本地工作副本右键create patch,会显示所有对于初始副本的修改,如下图示:可以用一个自己选择的文件名来保存这个补丁文件,补丁文件可以有任意的扩展名,但是按人一般习惯,人们都是用.patch或.diff作扩展名,现在已经做好提交你的补丁文件的准备了,此处命名为36.Patch。开始应用补丁,系统会提示你输入工作副本的位置,输入工作副本位置即可:一旦你选定了补丁文件和工作副本的位置,TortoiseMerge就会把补丁文件合并到你的工作副本中。系统会弹出一个小窗口列出所有被更改了的文件
19、。双击每一个文件,检查所做的改变,然后保存合并后的文件。远程开发者的补丁现在已经应用到了你的工作副本上,你需要提交它以使每一个人都可以从代码库访问到这些修改。4.15 备份/恢复资源库版本控制关键的是保证数据的安全性,不能因为磁盘损坏,程序故障造成版本库无可挽回的错误,为此必须制定较完备的备份策略。在Subversion中,我们有三种备份方式:完全备份,增量备份和同步版本库。 完全备份完全备份直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了。但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会造成备份的结果不够准确,失去备份的作用,为此Subversion提供了“svnadm
20、in hotcopy”命令。svnadmin hotcopy 资源库的源路径 资源库的目标存放路径。 增量备份完全备份非常简单,但是也是有代价的,当版本库很大时,经常进行完全备份是不现实的,也没有必要,就用到了增量备份,svnadmin dump命令。通过dump命令将资源库导出到一个文件中,可以整个库导出或者进行增量导出,然后可以通过load的方式导入到新库中。基本过程如下:svnadmin dump repos repos.dump-将当前目录下面的资源库repos导出到一个文件中svnadmin load new_repos dumpfile2上面命令实现了对修订版本15进行增量的备份,
21、其中的输出文件dumpfile2只保存了修订版本15更改的内容。 版本库同步Subversion 1.4增加了同步机制,可以用来实现版本库的备份或镜像。 对目标库初始化svnsync init svn:/localhost/project2 svn:/localhost/project1 其中project2是目标的版本库,而project1是源版本库。其中的目标版本库必须为空,而且必须允许修订版本属性的修改,也就是在目标的版本库的hooks目录里添加一个文件pre-revprop-change.bat,内容为空。 同步project2到project1svnsync sync svn:/lo
22、calhost/project2 这时候你update一下你的project2的一个工作拷贝,就会发现有了project1的所有内容。如果project1又有提交,这时候project2的版本库无法看到最新的变化,还需要再运行一遍sync操作,这样才能将最新的变化同步。需要注意的是,目标版本库必须是只读的,如果目标版本库发生了变更,则无法继续同步了。 同步历史属性的修改因为同步不会更新对历史属性的修改,所以svnsync还有子命令copy-revprops,可以同步某个版本的属性。 钩子自动同步希望在每次提交时同步,则需要在源版本库中增加post-commit钩子脚本,内容如下:echo of
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SVN 管理员 使用指南 45

限制150内