一、版本库浏览 Repo-browser
完成安装之后,点击鼠标右键,会出现下图,这是SVN的基本功能,下面进行介绍.
点击Repo-browser之后,会出现下面的小对话框:
在里面输入你要键接的版本库:
输入方法为:https://服务器IP:端口号/所在版本库名称,如PQA的配置库为:https://10.0.5.8:8443/PQA(记得svn 是小写字母的),点“OK”进入登录界面。如果以前有登录过,SVN 会自动记录登录历史。登录界面如下:
输入用户名和密码即可进入所在的版本库。
二、版本库的基本操作
1.Add file(folder)添加文件(文件夹)
用此命令可以向服务器端目录添加一个本地的文件或文件夹。
2.commit 提交
使用commit命令可以将add的文件添加到服务器
3.Show log 查看日志
点击此按扭,会显示当前目录下的所有文件和目录日志的信息。会跳出下面的对话框:
4.Export 导出
用此命令,指定路径,便可导出一个干净的目录树,所谓“干净的”就是导出的文件不受SVN 的版本控制。默认的是导出当前版本的目录内容,当然也可以指定你想导出的版,如图所示:
在Export directory中选择本地的路径.
5.Revision graph 版本树显示
它可以把对此目录所做的所有操作以图的形式显示出来,并可以记录每一步都进行了什么操作,相当于“Show log”的一个图解,如下图所示:
6.Check out 检出
用此命令可以从服务器导出选中的目录到本地工作拷贝(本机),它和Export 的区别在于,检出的文件受版本控制,如下图所示:
7.Refresh 刷新
刷新服务器端目录。
8.Delete 删除
对目录或文件都可以进行删除操作,删除后版本号增加,可以通过“show log”找出已经删除的文件,并且可以看到文件夹变成:
注意:文件只有在自己的工作副本中删除了,必须执行commit,文件才算是真正的删除了。
9.Rename 对目录或文件进行改名
如果要对文件进行改名,要在服务器端对文件或文件夹用Rename 命令,改完后在本地工作拷贝的上级目录执行“Commit”即可。可以在本地用右键,使用TSVN 的菜单改名,提交后效果一样。
10.Copy to working copy 把当前目录拷贝到本地
本地工作拷贝必须是已经受版本控制的文件夹,执行此命令后,如:把“01 参考资料”复制到本地工作拷贝的“PQA”中,就会出现下图,绿色的对号表示此目录是从服务器上“Checkout”出来的受版本控制的本地工作拷贝,蓝色的加号表示此文件预添加到服务器上。
这时,在此目录空白处或选中“01参考资料”文件夹,右键执行“SVN Commit”命令如下图所示:
“01参考资料”便会成功提交到服务器上“PQA”的目录下面。
11.Copy to 拷贝到
用此命令可以在当前版本库中建立分支(标签/基线),SVN 允许并行的维护文件和目录的分支,各个分支间互相联系,也可以从一个分支复制修改到另一个分支,最终,可以让本地工作拷贝反映到不同的分支上,所以在日常的工作中,可以“混合和比较”不同的开发线。
三、客户端操作
1.客户端的基本操作
在本地工作拷贝空白处点击右键会出现如下图所示,下面对此菜单中常用的功能做详细的介绍。
工作拷贝就是执行“checkout”命令从服务器端检出到本地的一个目录,是个人的一个私有工作区,在此目录下,可以任意的编辑文件,如果是源代码文件,可以像平常一样编译。比如,我们对过程记录中会议记录中一个文件的日期做修改,被编辑后的文件和它的上一级目录都会显示为:
这时可以对此文件执行 SVN Commit 提交操作,那么编辑的内容便会提交到服务器上,以便大家共享你的工作成果。
这时对改后的版本点击右键,执行“Show log”后,可以显示版本日志,如果想看到本次的改动和原始的版本有何差别,那么选中当前版本记录,右键执行“show changes”如下图所示:
这时它就会显示本次是哪些动作导致了版本的变化,红色部分新增加的内容,它以标注的方式显示:
还要补充说明的是,在SVN 上,有三种权限:读、读写、无权限。如果想对你的工作拷贝进行编辑,那么你必须有在这个目录下读写的权限,如果在服务器端此目录下面你无权限或只有读的权限,那么即使在本地拷贝做了修改,也不能提交到服务器上,也就是说,每个有读权限的人可以看查版本库目录下的内容(无权限的不能查看),但只能对自己被赋予读写权限的目录做修改。这就保护了你的工作目录不会被别的人随意改动。
2.常用功能介绍
(1).Revert返回上一级
如果你对文件做了修改之后,还未进行提交,可是文档的标记已经为红色的叹号,而这时你又发现变错了,想把文档返回到原来的状态,这时你可以执行Revert 操作,便可使文档回到原来的状态,因为你没有执行提交操作,这时服务器上版本库版本号不会增加。
(2).Update to revision返回到版本
如果是你已经执行了提交操作,这时可以用Update to revision 命令,在跳出的对话框中选择你想返回到的版本,那么你的本地工作拷贝便会回到你所选的版本的状态。“Save revision to”也可以把原来版本进行存档。强调一点的是,你的本地工作拷贝可以返回到原来的版本,可是服务器上只会记录你对它进行最后一次提交的版本,所以服务器端版本不会变化,如果你想把服务器端的文档内容也换为原来的状态,可以用旧版本文件覆盖新版本文件,然后提交。
(3).Import导入
导入是一种批量向服务器上添加文件的方法,如果你想把本地的文件或文件夹添加到服务器上的某个目录下面,那么在本地的目录中,在空白处右键TortoisrSVN—Import,会跳出下面的对话框:
点“OK”后就可以把本地的文件或文件夹导入到服务器端所选目录下面。
(4).SVN Update 更新
用此命令可以更新你的工作拷贝,因为每个人都有自己的工作拷贝,在你对项目目录进行操作的同时,项目组其他人员也在进行编辑并提交的动作,版本库内容随着项目人员的每一次提交做着不同的变化,所以在每次编辑操作之前,都要对本地工作拷贝执行Update 的操作,以保证本地工作拷贝与服务器项目版本库内容保持一致。
(5).Resolved冲突已解决
当两个人同时编辑一个文件,一个人先提交后,另一个人再进行提交的时候就会出现冲突,这时会弹出冲突对话框,如下图所示:
你可以对出现的冲突的文件进行编辑,选定你最终想要的文档。这就是“Merge”合并操作。在出现冲突以及应用分支时会经常用到合并的功能。合并完毕后,执行 Resolved,则新的版本就被生成了。
(6).Switch切换
把你的工作拷贝切换到另个的URL(服务器目录),服务器端目录有所变化,所存储的文件位置发生了变化,那么对你的工作拷贝进行编辑后就会出现提交不上去的情况,这时就要执行Switch 操作,使你的工作拷贝切换到服务器端对应的目录下面,即可再进行提交。Switch 操作只限于版本库内的切换。
(7).Relocate重新定位
它和Switch 的功能是一样的,不同的是,它实现的是版本库与版本库之间的切换。当服务器地址或版本库名称发生变化时,可以用些命令来更新你的工作拷贝。
(8).Create(Apply) patch创建应用补丁
如果你对这个文件没有修改的权限,但是迫于形势,你又必须对这个文件进行修改,这时你就可以用Create patch 创建补丁,然后把你创建的补丁发给对此目录有写权限的工作人员,他执行Apply patch后,你所做的修改就会被提交到服务器上。
3.分支与合并
(1).从项目主分支下载项目初始源码到开发分支
操作步骤:
1).在trunk目录新建一个项目名称为Astx;
2).在Astx项目中新建两个模块分别为module1和module2,分别为新建一个名test.txt的文件;
3).选择Astx项目名称,右击选择branch/tag;
4).请注意 From WC at URL必须是项目Astx的根路径,To URL:在这里选择branch存放的路径,通常的路径为:http://localhost/svn/Astx/branches/astx_dev_tb;
注:Branches为分支的存放路径,astx_dev_tb为分支的名称
5).在branches 目录右击update,就可以看到刚才的astx_dev_tb分支;
(2).把分支(astx_dev_tb)的的修改合并到项目主分支
操作步骤:
1).选择项目主分支右击TortoiseSVN选择 merge,选择 Reintegrate a branch;
2).点击Next,在URL to merge from 的地址栏中选择astx_dev_tb分支的路径:注意Working copy是项目主分支的路径;
3).点击NEXT,在Merge depth 下拉框中选择 “working copy”,点击Merge,将分支的修改合并到主干上;
4).在项目主分支右击commit,整个的过程才算完成!
5).如果要退回前一个版本,选择项目主分支右击TortoiseSVN选择Revert,将取消本次合并的内容.
(3).两个不同分支的修改合并到项目主分支
1).修改同一个文件的不同行
操作步骤:
A.基于项目主分支创建两个不同的分支分别为:astx_dev_john,astx_dev_harry(创建分支的方法,请参照1.1);
注:john和harry 为同一个项目创建自己的工作副本,工作是并行的.
B.john和harry修改同一个文件text.txt的不同行,john先保存修改到版本库(具体 的合并的步骤,请参照1.2),最后别忘了commit!
C.当harry提交修改的时候,版本库提示文件text.txt在他上次更新之后已经更改了, 如果john修改的内容不和harry的冲突,一旦把所有的修改集成到一起,就可以把工作拷贝保存到版本库,最后别忘了commit!
2). 修改同一个文件的同一行
操作步骤:
A.基于项目主分支创建两个不同的分支分别为:astx_dev_john,astx_dev_harry;
注: john和harry 为同一个项目创建自己的工作副本,工作是并行的.
B.john和harry修改同一个文件text.txt的同一行,john先保存修改到版本库(具体的合并的步骤,请参照1.2);
C. 当harry提交修改的时候,版本库提示文件text.txt冲突,这时只能够人工去选择一组修改,并把所有的修改集成到一起,就可以把工作拷贝保存到版本库,记得做完之后一定要commit!