TortoiseSVN常规功能
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TortoiseSVN常规功能
1 TortoiseSVN 常规功能介绍
TortoiseSVN 是最常⽤的Subversion 客户端软件,其所有功能都集成在系统右键中,
通过系统右键菜单便可实现TortoiseSVN 的⽇常操作。
⾸先,需从配置库(repository)签出(check out)原始码的⼀个版本到本地⼯作⽬录。
然后,可以只编辑想要改变的⽂件,也可以新增⽂件或是删除不再需要的⽂件。
当完成时,可以签⼊(Commit)到库中
如果在修改时,其它⼈已经改变了同⼀个⽂件,那么签⼊(commit)会失败。
那么
必须从仓库(repository)更新(Update)所有的⽂件。
这将其它开发⼈员的改变⾃动合并到您的⽂件副本⾥。
但如果两个⼈改变了同⼀⾏程序代码或者修改的是⼆进制⽂件(如word、excel 等),这将发⽣“冲突(Conflict)”,必须⼿动解决冲突(见后⾯)。
1.1 初始化导⼊/import
对于Subversion 来讲。
服务端进⾏配置后,项⽬版本库第⼀次运⾏,会由配置管理员进⾏第⼀次导⼊操作。
来到我们需要导⼊的项⽬根⽬录,依次导⼊D:\branchs;tags;trunk,⽬录下有若⼲个⽂件。
1)右键-> TortoiseSVN->导⼊/import
2)版本库URL输⼊https://192.168.75.135/www
3)系统提⽰输⼊⽤户名跟密码
点击OK后就可以将数据导⼊到我们刚刚定义的数据库中了。
在进⾏初始化导⼊操作时,也可通过⿏标选中需要导⼊的⽂件夹直接拖拽“版本浏览/ Repo –Browser”右侧。
1.2 SVN 检出/SVN check out
◆该操作可以将SVN 服务端所保存的数据下载⾄个⼈⼯作平台。
◆来到我们想要导⼊的项⽬根⽬录,在这个例⼦⾥是C:\Documents and Settings\\桌
⾯\test,该⽬录为空:
1)右键->SVN 检出/SVN check out
2)版本库URL 输⼊svn://192.168.75.138/www(此处版本库URL 为subversion
服务端IP 地址;检出⾄⽬录为C:\Documents and Settings\chengr.HS\桌⾯\test),点击确定。
版本库URL /URLof repository:为配置库路径
检出⾄⽬录(D)/checkout directory:为本地⼯作⽬录
其它⼀般按缺省设置。
通常情况下为最新版本,如需要其他版本,点击显⽰⽇志进⾏选择
1.3 显⽰⽇志/Show log
该功能主要显⽰版本库中过往的版本更新记录,在操作中可以显⽰更改的详情。
1.4 版本浏览器/Repo –Browser
版本库浏览⼯具,可以直观的显⽰版本库中的受控⽂件。
如果想看⽂件,也可直接选中⽂件,右键,选择打开功能。
注意:对于word、excel 等⽂件,应选择open with,然后选择相
应的软件打开。
1.5 检查修改/ Check for modifications
检查版本库中已变更的版本,并显⽰与本地⼯作平台不同的⽂件
1.6 版本分枝图/Revision graph
主要作⽤是显⽰分⽀与合并,可以直观的了解版本变化的过程。
1.7 更新⾄版本/Update to revision
更新到其中⼀个已控制的版本
1.8 SVN 还原/Revert
当⽤户对⼯作平台的内容进⾏修改,且未提交⾄版本库时,可以选择此项,还原已修改的⽂件
注:Updata和Revert的区别
假设当前最新的版本是6,但是,最新的⼀次提交不是你想要的,也就是想把版本为6的修改⼲掉下⾯来看看如何分辨⽤revert和update来实现。
1、使⽤revert
保证本地copy为最新版本,即版本6.
将本地copy revert到版本5.
将本地copy commit。
2、使⽤update
将本地copy update到版本5.
这个时候是没办法直接提交的,因为你的修改不是在最新的版本(6)上进⾏的。
需要把版本5做个备份,然后check out版本6.
通过⽂件⽐较⼯具将版本6的本地copy修改为与版本5的本地copy⼀致。
然后将版本6的本地copy提交。
可见,revert与update的本质区别是,
revert是在本地copy原来版本的基础上进⾏的修改,若原来本地copy的版本为最新,可以直接commit;
update只是将本地copy更新到⼀个指定的版本,若更新到的不是最新版本,不能进⾏commit。
可见revert就是回退修改,但版本保持不变;update是将本地copy更新到⼀个指
定的版本。
1.9 清理/Clean up
当进⾏了⼀次版本稳定后,可以点击此项,系统将清除多余的⽂件
有些时候在客户端Checkout ⽂件后,SVN的系统图标也会不显⽰,可以执⾏⼀下“Clean up”,就会出现SVN 的系统图标。
1.10 获取锁定/Get lock
可以对版本库中的⽂件或⽂件夹进⾏锁定,则其他⽤户暂时⽆法对该⽂件或⽂件夹进⾏操作。
⼀旦对⽂件执⾏该操作,如果要修改⽂件,必须先获取锁定,才能修改。
1.11 解除锁定/Release lock
与功能2.10 对应,释放锁定,其他⼈可以对⽂件进⾏编辑
1.12 更新⼯作区/Update
从服务器取得变动的部分到本地副本的过程称作“更新(Updating)”。
更新可能作⽤于⽂件、⽬录上。
若要更新,选择想要的⽂件或⽬录,按⿏标右键并选择SVN Update。
对话框会蹦出并显⽰当它执⾏时更新的过程。
由其他⼈所做的变动会被合并到您的⽂件之中,执⾏更新(update)对配置库不会被影响。
如果在更新期间收到冲突提⽰,需⼿⼯解决冲突。
1.13 增加/Add
该功能可⽤于向版本库(repository)增加⽂件或⽂件夹。
也可以通过⿏标选中⽂件或⽂件夹直接拖拽到“版本库浏览器/Repo –Browser”右侧。
在新增操作被执⾏后,⽂件或⽂件⼩图标显⽰为“被改变了的(changed)”。
这是因为新增被视为本地端的变动,且尚未被⽤到仓库(repository)上,直到签⼊(commit)它们
1.14 撤销增加/Undo Add
该功能与2.13 功能对应,当增加的⽂件、⽂件夹还没提交(Commit)到配置库中,刚增加的⽂件或⽂件夹想撤销,可执⾏该操作。
2.15 提交/SVN Commit
让本地的修改在仓库(repository)有效称作“签⼊(committing)”。
在签⼊之前,应该做更新以确保没有冲突(conflicts)。
要开始签⼊更改,选择想要签⼊(commit)的⽂件或⽂件夹。
在所选的⽂件或⽂件夹上按⿏标右键,并选择SVN Commit。
要实现本地⽂件或⽂件夹增加到版本库(repository)中,其流程:
添加的⽂件时,别⼈看不到,版本库⾥也没有,最可能的原因是,只是执⾏了“Add”⽽没有“Commit”,这样只是在本地注明某个⽂件是预定要增加的,⽽没有实际添加到版本库中,要添加到版本库必须执⾏“Commit”。
删除⽂件也是⼀样。
当仓库与⽬录很多,使⽤TSVN 每次需要选择⽬录URL of repository 有很多地址时,可通过:右键->TortoiseSVN->Settings->Saved Data ,清除你想要的东西,如:URL、log、窗⼝⼤⼩、密码缓存等。
1.16 重新定位/relocate(没有成功)
通过切换,可将版本库地址切换到另⼀个地⽅,在使⽤分⽀时经常⽤到。
另外在内外⽹切换时也可以通过此⽅式实现。
为了内外⽹使⽤同⼀地址,避免切换,也可在C:\WINDOWS\system32\drivers\etc\hosts ⽂件内增加⼀⾏:
60.191.25.162 /doc/2b07aa80afaad1f34693daef5ef7ba0d4b736d12.html
这样⽆论内外⽹都可统⼀使⽤⼀个地址了。
2 TortoiseSVN 的进阶⽤法
2.1 锁定⽂件
锁分为两类:乐观锁、悲观锁
2.1.1 乐观锁
乐观锁设定
①下⿏标右键并选择TortoiseSVN →Get lock。
②当修改完成或⽆需锁定或其他⼈需要修改时,可以释放锁/release lock
(即“锁定-编辑-解锁”模型)
对于⼆进制⽂件,如doc、xls 等,可采⽤设置锁的⽅式。
这对于习惯于VSS 模式的⼈员,也可⽤此⽅式。
2.1.2 悲观锁
特点:
●对⽂件设置该属性后,checkout ⽂件都为只读,图标为灰⾊勾;
●必须先获取锁定才能进⾏修改,且⼀旦⼀个⽤户获得锁,其他⼈就⽆法修改;
●若⼯作副本已经out of date ⽆法获取锁定,必须更新到最新版本再获取锁定;
●可以对⽂件或⽂件夹进⾏;
缺点:
●新增的⽂件没有该属性;
悲观锁的设定:
●对⽂件或⽂件夹添加svn:needs-lock
●右键选中- >属性->Subversion 选项夹->properties->new->svn:needs-lock , 值
可填*
之后还要提交
提交之后的效果
注:当对⽂件夹锁定时,需勾选“递归应⽤该属性/Apply property recursively”;当对⽂件时,⽆需勾选“递归应⽤该属性/Apply property recursively”。
修改被锁定⽂件:
注意事项:
●⽤户checkout 该⽂件最新的版本;
修改⽂件步骤:
①获取锁(假设我们对“使⽤⼿册.doc”进⾏了属性修改”)
Check out “使⽤⼿册.doc”后,右击菜单->获取锁
②修改并check in
按⽇常修改流程执⾏;
③释放锁/release lock
修改完成后,commit “使⽤⼿册.doc”,系统会⾃动释放锁;如果该⽂件仍然需要保
持锁定,可以在提交的时候选择“保持锁定选项”
使⽤悲观锁可以有效解决本来计划对不太适合合并关键类⽂档(如⼆进制⽂件:
doc,xls 等⽂件)出现忘记锁定的情况。
3.2 创建分⽀/ Branch/tag
TAG 使得系统⽬前的状态可以在未来被重新建构。
SVN 使⽤整体版本号,每次提交都将使全局版本号加1,Tag 可为全局版本号取个容易记忆的名称。
与CVS 不同,它执⾏⾮常快。
在SVN 中,标记(Tags)和分⽀(Branch)的命令是在⼀起,说明两者有相似之处。
未修改的分⽀即为“标记”,标记修改后就转化为分⽀。
作基线时,可通过标记操作实现,将系统主⼲(trunk)复制到tags ⽬录下即可。
如:
1、选中trunk ⽬录
2、右键-TortoiseSVN-tags/branches
3、出现界⾯
因此,项⽬⽬录结构中,顶层必须符合规范,设⽴trunk、tags 和branches ⽬录,否则将⽆法做基线。
对于⽂件级的标签,虽然也可以通过tags 操作,但效果不⼤好,可在提交时写在备注说明中,以后可在⽇志显⽰中查到。
有⼏点需要注意:
默认的⽬标URL 将会是你当前⼯作副本所处的源URL。
你必须给你分⽀/标记编辑
⼀个路径。
必须选择要复制的源位置。
1)版本库中的最新版本
新分⽀直接从仓库中的最新版本⾥复制出来
2)版本库中指定具体的版本
在仓库中直接复制建⽴⼀个新分⽀同时也可以选择⼀个旧版本。
假如在你上周发布了项⽬时忘记了做标记,这⾮常有⽤。
3)⼯作副本
新的分⽀是⼀个完全等同于你的本地⼯作副本的⼀个副本
2.3 合并分⽀/Merge
选择右键菜单TortoiseSVN ->合并/Merge
⾸先考虑这么⼀个需求,为了Bug 修改的⼯作,创建分⽀A,主⼲同时也在进⾏正常的开发⼯作,现在分⽀ A 的⼯作完成,需要将 A 上的修改合并到主⼲上,这应当是最经常使⽤的⼀种模式,下⾯分步骤说明合并过程。
●第⼀步:将⼯作副本切换到主⼲上:这⼀步很重要,当前的⼯作副本的是要合并的
⽬的地
●第⼆步:在主⼲根⽬录内需要merge的⽂件上右键,如下图,选择最后⼀项。