TortoiseSVN使用方法 安装和配置
2013-09-10 17:42
399 查看
TortoiseSVN使用方法
安装和配置
TortoiseSVN的下载地址为http://tortoisesvn.net/downloads.html
有32位和64位的版本,一定要根据自己的操作系统下载对应的版本,最好安装一个简体中文的Language packs,可以更好的理解TortoiseSVN的功能。
对比工具可以使用winmerge和beyond compare,winmerge免费小巧,beyond compare功能更强大。这两款工具都比TortoiseSVN自带的对比工具要好一些。
在TortoiseSVN中的配置方法:
winmerge安装时勾选集成到TortoiseSVN
beyond compare要复杂一些,右键,TortoiseSVN - 设置,
差异查看器(Diff Viewer),设置用来比较不同版本文件的程序(comparing different revisions of files),设置用来比较不同版本属性的程序(comparing different revisions of properties),勾选外部,输入
"D:\Program Files\Beyond Compare 3\BComp.exe" %base %mine /title1=%bname /title2=%yname /leftreadonly
差异查看器/合并工具(Merge Tool),勾选外部,输入
"D:\Program Files\Beyond Compare 3\BComp.exe" %mine %theirs %base %merged /title1=%yname /title2=%tname /title3=%bname /title4=%mname
红色部分为beyong compare的路径,要带双引号。
创建本地版本库
要测试TortoiseSVN的功能,总不能在公司的正式服务器上乱搞把,所有先要创建一个测试的版本库。新建一个文件夹,名字不要用中文,进入文件夹,点击右键TortoiseSVN - 在此创建版本库。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/74eea502f33fb40e7915055d74644c0c.png)
TortoiseSVN会在这个文件夹创建版本库,并且会弹出一个提示框
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/592bc4ba5b27c2907603292e98bfbb1c.png)
点击“创建目录结果”,然后启动版本库浏览器,就可以看到版本库的目录结构
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/5f08e0cd781be552d928b2f9586362dc.png)
通过点击“创建目录结果”,TortoiseSVN自动创建了3个文件夹,branches,tags,trunk,很多人都会使用TortoiseSVN,但是对这三个目录去取不了解。
trunk目录
主干目录,一般情况下是在此目录下进行代码的开发,这个目录应该存放最新的代码。
tags目录
代码的版本标记,这个目录的代码不允许更改,比如,软件发了1.0版本,就需要将1.0版本的代码在tags中放一份拷贝,发了2.0,就要在tag中标记一个2.0。如果1.0软件出现了bug,开发人员要验证bug,直接从tag中取1.0版本的代码就可以了,不会把个个版本混淆。
branches目录
分支目录,用于开发新功能或解决老版本的bug。比如,1.0版本上线,开发人员全力投入2.0版本的开发,但是,1.0版本突然出现了一个bug必须要修复,而且很紧急,不能等到2.0版本上线,这时候该怎么办呢。正确的做法是,从tag中取1.0版本的代码,建立一个新的分支,开发人员在这个分支上解决1.0发现的bug,解决完成并测试通过之后,在tag中添加一个新的版本标记,比如1.1,然后关闭这个分支。如果1.1再出现bug,那么从1.1建立分支,以此类推,直到2.0出现。
加入和检出工程
由于版本库是本地,我们可以通过文件路径来访问,右键TortoiseSVN - 版本库浏览器,输入file:///F:/svn_test/
F:/svn_test/就是刚才创建版本库的文件夹
打开版本库浏览器,在trunk目录点击右键,加入文件夹,加入一个新的Android工程TestSVN。
然后将这个工程检出
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/d468fa697b4d38de170cfc64952bdc2f.png)
.settings bin gen这三个目录和代码无关,要先忽略掉,选中这三个目录,右键 TortoiseSVN - 去除版本控制并增加的忽略列表。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/57ca19b252a72e12738e163d64b18dde.png)
提交代码后,这3个文件夹有改变的话不会有提示。
修改代码
删除文件,正确的做法是在要删除的文件上点击右键 - TortoiseSVN - 删除。还原修改,右键 - TortoiseSVN - 还原。
重命名,同样,右键 - TortoiseSVN - 改名。
增加文件,右键 - TortoiseSVN - 增加,文件会变成小加号
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/34ade1f19d973451b466bc646d2cdfe3.png)
移动文件,直接打开版本库浏览器拖动,或者剪切,提交
解决冲突,冲突形成的原因是两个人同时修改了一个文件的同一个地方,
例如:原始文件为,版本为1
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
package com.example.test; public class Test { String test = null; public Test(String test){ this.test = test } }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
A和B都checkout这个文件,A修改了文件并进行提交,文件版本变为2
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
package com.example.test; public class Test { String test = null; public Test(String test){ this.test = "test" } }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
B修改了文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
package com.example.test; public class Test { String test = null; public Test(String test){ this.test = "aaa" } }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
这时候,如果B更新文件,就会提示冲突
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/7461b98a301232de21a9b85d9ca913e2.png)
冲突原因是两人同时在版本1上进行了修改。
这时要求B对比对比A做的修改和自己的修改,同A沟通后确定最终的代码,然后进行合并。
这里用B的代码为最终代码,修改方法为:
在冲突文件点右键 - TortoiseSVN - 编辑冲突,在最下面的编辑框冲突的地方,也就是是红色叹号的位置点击右键
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/ba3ba2576576754ce9c47e94f3a54def.png)
选择使用“我的”文本块,合并后的代码为:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/d92bbfa1aecd60e435d8c37956185ce1.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
package com.example.test; public class Test { String test = null; public Test(String test){ this.test = "aaa" } }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
去掉了this.test = test,增加了this.test = "aaa",保存,弹出窗口
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/e1f32f874bcee3fb2bff64309cad958d.png)
选择标记为解决,冲突的叹号就没有了,文件就可以正常的提交了。
如果使用beyond compare的3路合并工具的话,代码更加的直观
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/ee8858c5976915a18794b175382c7b64.png)
左边为B修改后的文件,中间为原始文件,右边为A修改后的文件,最下边为合并后的文件。点击蓝色小箭头使用左边文件,点击黄色小箭头使用中间文件,点击紫色小箭头使用右边文件。
修为完成保存后,要手动标记为解决,右键 - TortoiseSVN - 解决。
创建分支和标记
说白了就是在其他的文件放一份拷贝,打开版本库浏览器,在要创建分支或标记的工程目录上点击右键![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/69e1df0a25f441bad464a8520a0aabfc.png)
选择复制到,输入目标路径,分支是branches,标记是tags
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/f287480d649caf282c0698eb17a81a9f.png)
最好输入日志信息,这样就实现了分支或标记
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/eac13b02f06b6ba657a0e8ecf0d6ce43.png)
可以通过分支图查看,每增加一个分支,版本号加一。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/a813f56d0ae5957cce455f26bf18e86f.png)
创建和应用补丁
如果有多个分支,比如XXX纪念版,XXX专版,XXX增值版,修改一个地方要同步到多个分支,是个很麻烦的事情,这时候可以用补丁来解决。还是使用上面的工程,有一个主干和两个分支,主干中有一个 Test.java 文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
public class Test { private String test; public Test(String test) { this.test = test; } }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201603/69c5a8ac3fa60e0848d784a6dd461da6.gif)
将 “this.test = test;” 修改为 “this.test = "aaa";”
在文件夹的空白处点右键 - TortoiseSVN - 创建补丁,选择修改的文件,点确定,创建一个Test.java.patch的补丁
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/a351cfe40dba115b5771e1e3b1f16589.png)
在检出的分支中点击右键 - TortoiseSVN - 应用补丁,补丁效果如下
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/41a9a588926bef3f27b5f3c2bcab8a8c.png)
合并
在要合并的副本点击空白处点击右键 - TortoiseSVN - 合并,选择第三个选项,
关于起始和结束的url,查看版本分支图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/8b9237ea42056a8e3d7494fc80101f0d.png)
结束的必须大于起始的的版本号,我想把b1分支的版本5合并到主干,就按下图填写
![](http://images.cnitblog.com/blog/189715/201309/10125738-74e208af81724abfa6eee0f7fd6aa25b.png)
提交代码后再次查看版本分支图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202009/24/1fcb5f45f21c186ac06d27debc7e9329.png)
主干的版本号升级为6,合并完成。
相关文章推荐
- centos 中的cron计划任务安装配置使用方法
- Win7下SQLite安装配置与使用方法详解
- k8s技术预研3--使用kubeadm安装、配置Kubernetes集群以及进行故障排查的方法
- 解决【必须使用“角色管理工具”安装或配置Microsoft .NET Framework 3.5 SP1】的方法
- 客户端TortoiseSVN的安装及使用方法
- python安装MySQLdb:在windows下或linux下(以及eclipse中pydev使用msqldb的配置方法)
- 客户端TortoiseSVN的安装及使用方法 (申明:来源于网络)
- 稳定性检测工具smokeping安装配置和使用方法
- Jpgraph的安装与配置使用方法
- solr搜索引擎安装配置及项目中的使用方法
- Linux配置svn以及TortoiseSVN的安装和使用
- Django中redis的使用方法(包括安装、配置、启动)
- Myeclipse2015 Jrebel插件的安装、配置、使用(新建.java文件、给类添加新方法、新属性、修改代码等,不用重启tomcat即可更新)
- postgresql(V-9.1) debian7.x(wheezy)安装过程+配置详解+数据库的基本使用方法
- <配置> Ubuntu gcc 安装 使用方法
- 全面介绍Github for Windows安装 配置使用方法
- PHP集成环境的安装及配置,EasPHP的使用方法
- VisualSVN Server以及TortoiseSVN客户端的配置和使用方法
- TortoiseSVN 插件配置及使用方法
- linux服务器subversionSVN安装配置及windows客户端TortoiseSVN使用教程