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 - 在此创建版本库。

TortoiseSVN会在这个文件夹创建版本库,并且会弹出一个提示框

点击“创建目录结果”,然后启动版本库浏览器,就可以看到版本库的目录结构

通过点击“创建目录结果”,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。
然后将这个工程检出

.settings bin gen这三个目录和代码无关,要先忽略掉,选中这三个目录,右键 TortoiseSVN - 去除版本控制并增加的忽略列表。

提交代码后,这3个文件夹有改变的话不会有提示。
修改代码
删除文件 ,正确的做法是在要删除的文件上点击右键 - TortoiseSVN - 删除。
还原修改 ,右键 - TortoiseSVN - 还原。
重命名 ,同样,右键 - TortoiseSVN - 改名。
增加文件 ,右键 - TortoiseSVN - 增加,文件会变成小加号

移动文件 ,直接打开版本库浏览器拖动,或者剪切,提交
解决冲突 ,冲突形成的原因是两个人同时修改了一个文件的同一个地方,
例如:原始文件为,版本为1
package com.example.test;
public class Test {
String test = null;
public Test(String test){
this.test = test
}
}
A和B都checkout这个文件,A修改了文件并进行提交,文件版本变为2
package com.example.test;
public class Test {
String test = null;
public Test(String test){
this.test = "test"
}
}
B修改了文件
package com.example.test;
public class Test {
String test = null;
public Test(String test){
this.test = "aaa"
}
}
这时候,如果B更新文件,就会提示冲突

冲突原因是两人同时在版本1上进行了修改。
这时要求B对比对比A做的修改和自己的修改,同A沟通后确定最终的代码,然后进行合并。
这里用B的代码为最终代码,修改方法为:
在冲突文件点右键 - TortoiseSVN - 编辑冲突,在最下面的编辑框冲突的地方,也就是是红色叹号的位置点击右键

选择使用“我的”文本块,合并后的代码为:

package com.example.test;
public class Test {
String test = null;
public Test(String test){
this.test = "aaa"
}
}
去掉了this.test = test,增加了this.test = "aaa",保存,弹出窗口

选择标记为解决,冲突的叹号就没有了,文件就可以正常的提交了。
如果使用beyond compare的3路合并工具的话,代码更加的直观

左边为B修改后的文件,中间为原始文件,右边为A修改后的文件,最下边为合并后的文件。点击蓝色小箭头使用左边文件,点击黄色小箭头使用中间文件,点击紫色小箭头使用右边文件。
修为完成保存后,要手动标记为解决,右键 - TortoiseSVN - 解决。
创建分支和标记
说白了就是在其他的文件放一份拷贝,打开版本库浏览器,在要创建分支或标记的工程目录上点击右键

选择复制到,输入目标路径,分支是branches,标记是tags

最好输入日志信息,这样就实现了分支或标记

可以通过分支图查看,每增加一个分支,版本号加一。

创建和应用补丁
如果有多个分支,比如XXX纪念版,XXX专版,XXX增值版,修改一个地方要同步到多个分支,是个很麻烦的事情,这时候可以用补丁来解决。
还是使用上面的工程,有一个主干和两个分支,主干中有一个 Test.java 文件
public class Test {
private String test;
public Test(String test) {
this.test = test;
}
}
将 “this.test = test;” 修改为 “this.test = "aaa";”
在文件夹的空白处点右键 - TortoiseSVN - 创建补丁,选择修改的文件,点确定,创建一个Test.java.patch的补丁

在检出的分支中点击右键 - TortoiseSVN - 应用补丁,补丁效果如下

合并
在要合并的副本点击空白处点击右键 - TortoiseSVN - 合并,
选择第三个选项,
关于起始和结束的url,查看版本分支图

结束的必须大于起始的的版本号,我想把b1分支的版本5合并到主干,就按下图填写

提交代码后再次查看版本分支图

主干的版本号升级为6,合并完成。
TortoiseSVN 同步分支的更多相关文章
- TortoiseSVN中分支和合并实践
使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并 ...
- TortoiseSVN中分支和合并实践【转】
使用svn几年了,一直对分支和合并敬而远之,一来是因为分支的管理不该我操心,二来即使涉及到分支的管理,也不敢贸然使用合并功能,生怕合并出了问题对团队造成不良影响,最主要的原因是,自己对分支的目的和合并 ...
- TortoiseSVN 的分支合并操作
今天对svn的分支合并有了兴趣,所以对新建了一个项目练练手. 在网上找了一篇文章做指导: http://www.open-open.com/lib/view/open1346982569725.htm ...
- git 本地同步分支数,删除远程已经删除掉的多余分支
git remote show orgin (展示当前本地分支和远程上的分支差异,多余分支后会被标注 use 'git remote prune' to remove.) git remote pr ...
- 关于AndroidStudio 经常弹出TortoiseSVN 同步的解决办法
我的AndroidStudio在使用时是从TortoiseSVN的文件夹下直接打开的 但是由于svn自己的特点每改一个文件就要跳出来一个svn的对话框 体验极其难受!砍人的心都有了 网上的解决办法都是 ...
- git 全量同步分支
当前分支是maser分支,我想将stable分支上的代码完全覆盖brush分支,首先切换到brush分支. git reset --hard origin/stable 执行上面的命令后brush分支 ...
- git设置远程同步分支
git push --set-upstream origin yourBranchName
- SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支
硬广:<SVN与TortoiseSVN实战>系列已经写了两篇,第一篇<SVN与TortoiseSVN实战:从入门到精通>,关于分支和标签的知识介绍可翻阅第二篇<SVN与T ...
- SVN与TortoiseSVN实战:标签与分支
最近在写<IOS性能调优系列>,今天偷个懒,写写SVN与TortoiseSVN实战的第二篇,标签与分支. 第一篇详见<SVN与TortoiseSVN实战:从入门到精通> SVN ...
随机推荐
- ZMMR104-预留单批量删除及恢复
************************************************************************ Title : ZMMR104 ** Applicat ...
- java的getClass()函数
Java反射学习 所谓反射,可以理解为在运行时期获取对象类型信息的操作.传统的编程方法要求程序员在编译阶段决定使用的类型,但是在反射的帮助下,编程人员可以动态获取这些信息,从而编写更加具有可移植性的代 ...
- POJ 2387 Til the Cows Come Home
题目链接:http://poj.org/problem?id=2387 Til the Cows Come Home Time Limit: 1000MS Memory Limit: 65536K ...
- ubuntuPC机安装JLink驱动
摘要: 打开你仿真用的机器人的配置文化,这个应该是local_costmap_params.yaml transform tolerance g改为1 本文介绍了如何在Ubuntu平台配置J- ...
- Baxter机器人---测试准备(一)
原创博文,转载请标明出处:--周学伟http://www.cnblogs.com/zxouxuewei/ baxter:http://sdk.rethinkrobotics.com/wiki/Work ...
- centos rm 回收站
桌面版本的linux就默认有,非桌面版本貌似没(反正我没找到) linux rm删除文件之后,恢复就比较麻烦了,即使恢复了,文件名格式都变成一串数字了. 修改root用户的环境变量 vi ~/.bas ...
- hihoCoder #1040 (判断是否为矩形)
题目大意:给四条线段,问能否构成一个矩形? 题目分析:先判断能否构成四边形,然后选一条边,看另外三条边中是否为一条与他平行,两条垂直. 代码如下: # include<iostream> ...
- hdu1827 强连通
题意:一个人需要联系其他所有人,已知他自己联系每个人的花费,并且他可以联系某个人再让他联系他能联系到的人,给出一系列关系表示 A 能够联系 B.问他最少需要联系多少人,花费多少钱 首先,建成一个有向图 ...
- Qt消息机制和事件(一)
一,事件 事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等 ...
- Nginx-搭建https服务器
先看Nginx中的配置 server { listen ; ssl on; ssl_certificate /usr/local/nginx/conf/任意证书名.crt; ssl_certifica ...