SVN管理员使用指南.docx
《SVN管理员使用指南.docx》由会员分享,可在线阅读,更多相关《SVN管理员使用指南.docx(35页珍藏版)》请在冰豆网上搜索。
SVN管理员使用指南
SVN管理员使用指南
1Subversion简介1
Subversion简介1
Subversion架构2
Subversion组件3
Subversion基本流程3
2安装SVN服务4
安装SVN和TortoiseSVN4
创建SVN资源库4
创建SVNserver服务5
运行SVNserver服务6
3用户及权限管理6
用户管理7
权限管理7
4SVN基本使用9
导入/导出(import/export)9
初始化检出(checkout)10
更新修改(update)10
查看日志信息(showlog)10
取消修改(revert)10
提交修改(commit)10
合并信息(merge)10
创建/删除/重命名10
加锁/释放锁(get/releaselock)10
添加、删除、重命名(add、delete、rename)10
拷贝(copy)13
查看修改信息(checkformodifications)13
分支/标记(branch/tag)13
创建并应用补丁(create/applypatch)15
备份/恢复资源库17
删除资源库19
版本(revision)关键字19
统计信息(statistics)20
禁用密码缓存21
5TortoiseSVN设置21
常规设置(General)23
图标叠加(Iconoverlays)27
网络设置(network)29
日志缓存设置(logcaching)30
钩子脚本设置(HookScripts)32
外部程序设置(externalprograms)32
6TortoiseSVN基本命令37
Svn子命令37
Svnadmin38
SvnadminSwitches39
SvnadminSubcommands39
Svnlook40
Svnlook选项40
Svnlook41
Svnserve41
Svnserve选项41
Svnversion42
Svnversion选项42
1Subversion简介
1.1Subversion简介
Subversion是一个自由/开源的版本控制系统。
在Subversion管理下,文件和目录可以超越时空,即Subversion允许数据恢复到早期版本,或者是检查数据修改的历史。
Subversion的版本库可以通过网络访问,从而使用户可以在不同的电脑上进行操作。
从某种程度上来说,允许用户在各自的空间里修改和管理同一组数据可以促进团队协作。
因为修改不再是单线进行,开发速度会更快。
此外,由于所有的工作都已版本化,也就不必担心由于错误的更改而影响软件质量。
它是一个通用系统,可以管理任何类型的文件集。
1.2Subversion架构
服务器端保存所有版本数据的Subversion版本库,本地端是Subversion的客户程序,管理所有版本数据的本地映射(工作拷贝),两端之间是各种各样的版本库访问(RA)层,可以使用网络服务(Apache/svnserve)访问版本库,也可以绕过网络服务器直接访问版本库。
1.3Subversion组件
svn
命令行客户端程序
svnversion
显示工作拷贝的状态(用术语来说,就是当前项目的修订版本)
svnlook
直接查看Subversion版本库的工具
svnadmin
建立、调整和修复Subversion版本库的工具
svndumpfilter
过滤Subversion版本库转储数据流的工具
mod_dav_svn
ApacheHTTP服务器的一个插件,使版本库可以通过网络访问
svnserve
一个单独运行的服务器程序,可以作为守护进程或由SSH调用。
这是另一种使版本库可以通过网络访问的方式
svnsync
一个通过网络增量镜像版本库的程序
1.4Subversion基本流程
1)初始化取出(checkout)版本库(repos),建立本地工作拷贝(WorkingCopy)。
2)与repos同步(update),保证将要进行的编辑是最新版本。
3)编辑源代码(包括创建、修改、删除)。
4)与repos同步(update),提交(commit)之前先要同步到最新的版本,保证所有在自己之前的有关提交已经在本地有所知晓。
5)解决冲突(resolveconflict)。
6)提交(commit),建议写上这次提交或变更内容的摘要,便于以后查阅。
7)再次执行步骤2)。
每次开始新的编辑前的同步repos很重要,另外经常地update,特别是多人项目中。
如果每次提交(commit)前不进行更新(update)的到最新的版本的话,svn会提示当前的拷贝过期,需要更新。
2安装SVN服务
2.1安装SVN和TortoiseSVN
下载SVN服务器安装文件:
1.4.6
下载客户端安装文件:
1.6.5,然后运行安装,安装成功后必须重启计算机。
也可以根据需要加载中文语言包(不建议使用)。
在任意位置点击右键,出现下面图示即表示TortoiseSVN安装成功。
2.2创建SVN资源库
SVN资源库的创建有两种方式:
命令行方式和客户端方式。
命令行方式:
svnadmincreateD:
\svn\repos(注意目录路径名区分大小写)
客户端方式:
通过TortiseSVN来创建,在本地新建目录D:
\svn\repos,选中文件夹repos,右击“TortoiseSVN——Createrepositoryhere”
库类型选择默认的FSFS,
创建成功后会在D:
\svn\repo目录下出现若干文件和文件夹,可以看到三个配置文件authz,passwd,。
其中为服务配置文件(存放全局访问控制信息),passwd为访问资源库的认证文件,authz为认证后的账户访问权限授权文件,可根据需要进行添加和授权。
后面在用户及权限管理处会详细介绍。
2.3创建SVNserver服务
运行cmd命令输入:
sccreatesvnservebinpath="C:
\Subversion\bin\--service--rootD:
\svn\repos"displayname="svnserve"depend=tcpipstart=auto
上述命令可以实现名为“svnserve”服务的后台创建和自动启动。
2.4运行SVNserver服务
有两种方式运行svnserver服务:
Cmd命令行输入:
netstartsvnserve(停止svnserver服务用:
NETSTOPsvnserve;删除svnserver服务用:
netdeletesvnserve)
控制面板—管理工具—服务:
启动“svnserve”服务
3用户及权限管理
在Subversion的使用当中,存在“认证”、“授权”两个概念。
认证,即authentication,是指用户名与密码的认证。
授权,即authorization,是指某用户对某个目录是否具备读、写权限的一种审核。
这两者配合作用,就组成了Subversion的整个账户管理体系。
为了使用用户及权限管理功能文件,必须在服务器端打开D:
\svn\repos\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=sallyssecret
admin=1234
sc1=1234
sc2=1234
tom1=1234
tom2=1234
3.2权限管理
Subversion提供了面向目录的账户权限管理功能,通过它,我们就可以很精确地实现项目目录的访问控制。
创建完资源库后,出现的authz为认证后的账户访问权限授权文件。
假设目录结构如下:
Project
dev
test
test1
test2
要求:
1、admin对所有目录可读可写
2、Dev_group对dev目录可读可写,Test_group无权限
3、Test_group对test目录可读可写,Dev_group无权限
打开D:
\SVNServer\repos\conf\authz,对上面的用户添加分组:
[groups]
#harry_and_sally=harry,sally
Admin_group=admin
Dev_group=sc1,sc2
Test_group1=tom1,tom2
[/]
1.0.1
atch或.diff作扩展名,现在已经做好提交你的补丁文件的准备了,此处命名为。
开始应用补丁,系统会提示你输入工作副本的位置,输入工作副本位置即可:
一旦你选定了补丁文件和工作副本的位置,TortoiseMerge就会把补丁文件合并到你的工作副本中。
系统会弹出一个小窗口列出所有被更改了的文件。
双击每一个文件,检查所做的改变,然后保存合并后的文件。
远程开发者的补丁现在已经应用到了你的工作副本上,你需要提交它以使每一个人都可以从代码库访问到这些修改。
3.3备份/恢复资源库
版本控制关键的是保证数据的安全性,不能因为磁盘损坏,程序故障造成版本库无可挽回的错误,为此必须制定较完备的备份策略。
在Subversion中,我们有三种备份方式:
完全备份,增量备份和同步版本库。
完全备份
完全备份直接使用拷贝命令,将版本库目录拷贝到备份目录上,就可以了。
但是这样不是很安全的方式,因为如果在拷贝时版本库发生变化,将会造成备份的结果不够准确,失去备份的作用,为此Subversion提供了“svnadminhotcopy”命令。
svnadminhotcopy资源库的源路径资源库的目标存放路径。
增量备份
完全备份非常简单,但是也是有代价的,当版本库很大时,经常进行完全备份是不现实的,也没有必要,就用到了增量备份,svnadmindump命令。
通过dump命令将资源库导出到一个文件中,可以整个库导出或者进行增量导出,然后可以通过load的方式导入到新库中。
基本过程如下:
svnadmindumprepos> ----将当前目录下面的资源库repos导出到一个文件中
svnadminload new_repos< ----将文件中的内容导入到新库new_repos中,在导出的过程中可以增加一些参数来进行增量导出或导出指定范围的版本。
svnadmindumpproject1--revision15--incremental>dumpfile2
上面命令实现了对修订版本15进行增量的备份,其中的输出文件dumpfile2只保存了修订版本15更改的内容。
版本库同步
Subversion增加了同步机制,可以用来实现版本库的备份或镜像。
对目标库初始化
svnsyncinit
其中project2是目标的版本库,而project1是源版本库。
其中的目标版本库必须为空,而且必须允许修订版本属性的修改,也就是在目标的版本库的hooks目录里添加一个文件,内容为空。
同步project2到project1
svnsyncsync
这时候你update一下你的project2的一个工作拷贝,就会发现有了project1的所有内容。
如果project1又有提交,这时候project2的版本库无法看到最新的变化,还需要再运行一遍sync操作,这样才能将最新的变化同步。
需要注意的是,目标版本库必须是只读的,如果目标版本库发生了变更,则无法继续同步了。
同步历史属性的修改
因为同步不会更新对历史属性的修改,所以svnsync还有子命令copy-revprops,可以同步某个版本的属性。
钩子自动同步
希望在每次提交时同步,则需要在源版本库中增加post-commit钩子脚本,内容如下:
echooff
setSVN_HOME="C:
\ProgramFiles\Subversion"
%SVN_HOME%\bin\svnsyncsync--non-interactive,然后放到版本库project1下的hooks目录下,这样project1每次提交,都会引起project2的同步。
3.4删除资源库
3.5版本(revision)关键字
HEAD、BASE、COMMITTED、PREV是指定版本号时可以使用的一些保留字。
各自的含义大致介绍如下:
HEAD:
资源库中的最新版本,实际是反映的“当前版本管理中的最新”。
BASE:
本地工作拷贝中的初始版本,是指最后一次更新(update)操作或者取出(initialcheckout)操作时取出的那些文件版本。
COMMITTED:
在BASE版本之前(或BASE)一个项目最后修改的版本。
PREV:
一个项目最后修改版本之前的那个版本(技术上为commit-1)。
3.6统计信息(statistics)
统计信息,可以显示一些你感兴趣的关于日志对话框中版本的信息,显示已经有几个作者做了工作,他们各自提交的次数,按周的统计等。
选中文件或文件夹,右键showlog
点击statistics
3.7禁用密码缓存
许多服务器配置为每次请求要求认证,对被强制每次输入用户名密码,Subversion客户端对此有一个修补,存在一个在磁盘上保存认证凭证缓存的系统,缺省情况下,当一个命令行客户端成功的响应了服务器的认证请求,它会保存一个认证文件到用户的私有运行配置区。
当客户端接收到一个认证请求,它会首先查找用户磁盘中的认证凭证缓存,如果没有发现,或者是缓存的凭证认证失败,客户端会提示用户提供需要的信息。
若很在乎密码缓存,可以永久关闭缓存或每次执行命令时说明。
在某次命令关闭密码缓存可以在命令中使用--no-auth-cache选项,如果永久关闭缓存,可以在本机的Subversion的配置文件中注释掉store-passwords=no行,就不会有凭证缓存在磁盘了。
4TortoiseSVN设置
任意位置点击右键,按照如下图示操作:
进入Settings设置界面,共有常规设置、图标集重载设置、网络设置、日志缓存设置及钩子脚本设置等几个选项:
4.1常规设置(General)
常规设置包括四个部分:
ContextMenu、Colors、Dialogs1、Dialogs2。
General设置界面:
1)设置用户的界面语言。
2)设置是否每周自动检查最新版本。
3)可以查看configure设置系统声音属性。
4)设置全局忽略样式,那些符合模式的文件,在执行导入操作时同样被忽略。
通过在模式框中输入文件名或扩展名来忽略文件或文件夹,不同的模式之间以空格分隔。
5)Subversion配置文件的更改。
例如:
上面节描述的禁用密码缓存即是在此处修改。
6)建议禁用Setfiledatestothe“lastcommittime”。
7)建议禁用Use_svninsteadof.svndirectories。
ContextMenu设置界面:
1)设置在TortoiseSVN的主上下文菜单中哪些条目可以直接在鼠标右键菜单显示,哪些在TortoiseSVN子菜单显示。
默认情况下很多项未被勾选,只在子菜单显示,根据需要及个人使用习惯设定。
2)设置svn:
needs-lock属性的文件的GetLock出现在顶级主菜单中。
Dialogs1设置界面:
1)设置默认日志信息数。
2)设置日志信息字体和字号,作用范围为版本日志对话框的中间窗格,以及提交对话框时填写日志信息的窗格。
3)设置日志信息是否使用短日期/时间格式。
4)是否在日志列表中设置双击来实现与prevrevision的比较。
5)是否设置当前工作副本为合并的起始URL。
6)缺省检出路径/检出URL。
7)进程设置选项,下拉列表含义:
Closemanually:
手动关闭(推荐设置),这项设置允许你选择在何种情况下关闭对话框。
Auto-closeifnomerge,addsordeletes:
如无合并、添加、删除操作,自动关闭。
如果有简单更新的话,进程对话框将关闭。
但如果版本库的更改和你的内容进行了合并,或若有任何文件被添加或删除,对话框将保持打开。
若操作中发生什么冲突和错误这些对话框也将同样保持打开。
Auto-closeforlocaloperations:
对本地操作自动关闭,但在做远程操作时对话框将保持打开。
Auto-closeifnoconflicts:
无冲突时自动关闭。
仅在发生了冲突或错误,对话框保持打开。
即使在无合并、添加、删除操作时也同样关闭对话框。
Auto-closeifnoerrors:
无错误时,自动关闭。
即使在有冲突发生时也会关闭。
维持对话框打开的唯一条件是发生了错误,使得Subversion无法完成任务。
Dialogs2设置界面:
1)递归处理未进行版本控制的文件夹。
若这个选项框被选中(默认状态),那么一个非版本控制的文件夹,不论在添加、提交或检查修改时显示的是什么状态,它的每个子文件和子文件夹都要同样显示。
取消选择将减少这些对话框中的混乱程度,但是选择添加一个非版本控制的文件夹,将会非递归地添加。
2)自动完成文件路径和关键词。
3)自动完成分析的超时时间(秒)。
4)仅在设置了tsvn:
projectlanguage时才进行拼写检查,在进行所有提交操作时都不进行拼写检查项,后拼写检查功能将在项目属性做出明确要求时才生效。
5)设置日志历史信息中保留的最大条目数量。
6)设置如果提交失败,自动重新打开提交和分支/标签对话框。
7)自动选择项目。
8)启动时连接版本库,可以设置是使版本库检查的动作每次自动启动。
9)在锁定之前显示加锁对话框,若使用tsvn:
lockmsgminsize属性,那么不管你是否设置,都会看到加锁对话框,因为此项目需要加锁信息。
Colors设置界面:
可以按照个人习惯来配置使用的各种操作的文本颜色。
4.2图标叠加(Iconoverlays)
IconOverlays设置界面:
1)缓存状态。
Default:
设置一个节点是否是缓存所有状态信息在一个单独的进程中,该进程在C:
\ProgramFiles\TortoiseSVN\bin目录下。
Shell:
缓存在外壳扩展dll中直接完成。
None:
TSVN在浏览器里就完全不去获取状态,版本控制下的文件除获得正常的图标重载外,将不会获得任何图标重载类型。
2)设置驱动类型的选择。
3)选择/排除在某个指定路径上或以该指定路径为开始路径的所有子目录文件上的图标重载。
IconSet设置界面:
1)在上图的IconSet下拉列表中可以选择不同的图标集显示风格(更改图标集后必须重启计算机才能够生效)。
2)也可以设置不同的图标视图方式:
ListView或SymbolView。
4.3网络设置(network)
Network设置界面:
1)设置是否使用代理服务器。
代理设置项有:
服务器地址、端口、用户名/密码、编辑Subversionserverfile等。
2)设置SSH客户端程序,用来支持TortoiseSVN使用SVN+SSH协议的版本库建立安全连接,建议使用,目前已被集成在TortoiseSVN中。
安装TortoiseSVN的时候已经附带安装,该文件的存放路径是C:
\ProgramFiles\TortoiseSVN\bin\。
4.4日志缓存设置(logcaching)
LogCaching设置界面:
1)全局设置:
是否启用日志缓存,是否缓存未知的URL及UUID。
2)设置在不能够访问资源库时的处理方式,在下拉列表中共分三种处理办法。
3)TimeoutbeforeupdatingtheHEADrevision:
设置为0可以及时在日志信息中查看最新的revision日志信息。
4)Daysofinactivityuntilsmallcachesgetremoved:
控制缓存清除的时间(天),可以设置间隔多长时间对缓存执行清理操作。
5)Maximumsizeofremovedinactivecaches:
目前已经激活的最大缓存空间(KB)。
6)Maximumnumberoftoolfailuresbeforecacheremoval:
缓存清除前允许失败的最大次数,建议此处设置为0,否则发生崩溃时,日志会自动删除而无法从日志查看系统或工具崩溃的原因。
CachedRepositories设置界面:
1)设置本地缓存的资源库的资源库URL、缓存大小(KB)。
可以选择其中的一个URL执行下面的update、export和delete操作。
2)查看details可以查看详细的日志缓存统计信息。
4.5钩子脚本设置(HookScripts)
点击HookScripts设置界面中的Add按钮出现如下界面:
Configurehookscripts设置界面:
1)可以设置钩子脚本的类型,共6种(按照对钩子脚本的调用时间分):
StartCommitHook:
开始提交。
Pre-CommitHook:
提交之前。
Post-CommitHook:
提交之后。
StartUpdateHook:
开始更新。
Pre-UpdateHook:
更新之前。
Post-UpdateHook:
更新之后。
2)本地工作副本的路径。
3)存放钩子脚本的路径,一般是资源库的本地路径/hooks/(钩子脚本类型)。
4)设置Subversion操作是否直到钩子完成才结束。
5)设置是否在运行时隐藏钩子脚本。
4.6外部程序设置(externalprograms)
可以自定义自己的差异查看器、统一的差异查看器和合并工具,以及差异查看/合并工具的高级设置。
DiffViewer设置界面:
一般选择默认的差异查看工具即可,可以在subversion属性中选择第三方工具进行差异查看,也