硬广:《SVN与TortoiseSVN实战》系列已经写了五篇,第二篇《SVN与TortoiseSVN实战:标签与分支》和第三篇《SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支》重点介绍了标签和分支的概念及实际操作演示,关注人数较多,三、四篇《SVN与TortoiseSVN实战:冲突详解(二)》详解了SVN如何判定冲突及冲突文件说明和解决冲突方法。

本篇详细SVN中补丁的概念,版本控制之道这本书对于SVN的讲解比较全面了,但书中也没有讲解补丁的概念,关于SVN补丁的介绍也寥寥无几。

其实学习和掌握补丁的用法后,在某些项目环境中还是有用武之地的,主要讲以下两点:

1、SVN补丁的概念;

2、SVN补丁的应用场景;

3、SVN补丁的制作及应用;

感谢博友的建议,在每篇前写明本篇所要讲述的重点 ~。~

1、SVN补丁的概念


SVN补丁其实并不神秘,只是平时工作中接触较少。

SVN补丁可以理解为一个patch格式的文件,这个patch格式文件可以忠实记录文件变动,而这个patch文件是根据SVN中文件的修改制作的。

Create patch和Apply patch就是创建和应用补丁,至于Properties为什么在这一组会在属性篇中讲,TortoiseSVN菜单的分组划分是很有设计哲学的,没事时可以仔细研究下。

2、SVN补丁的应用场景(一)


第一种场景看下这两张图:

图一的方式可以用之前讲的主干/分支来解决,每次修改主线版的内容通过合并的方式将修改合并到定制版中,这种方式需要在每个定制版中合并,人工每次操作非常麻烦,还容易出错。

图二是使用补丁的方式,主线版修改后创建补丁,在所有定制版中统一应用一次补丁,其目录结构如下:

patches下是所有定制版的项目目录,这样划分可以在整个patches目录上应用一次补丁,大大简化了操作。

2、SVN补丁的应用场景(二)


还有一种是涉及到权限的应用,将某些项目组的成员配置成只有读权限,而没有写权限。

这些只读权限的成员不能直接提交修改,而需要将修改制作成补丁,发给具有写权限的成员,审核通过后应用补丁,提交到SVN中。

这也是基于SVN的一种权限管理,熟悉Git的应该会比较理解。

3、SVN补丁的制作及应用(一)


最简单的方法是基于修改的文件直接创建补丁,在将本地文件修改后,在签入SVN之前(叹号标记时),选中文件,使用TortoiseSVN的Create patch菜单可以直接将文件的修改创建为patch格式的补丁文件:

3、SVN补丁的制作及应用(二)


还有一种方式可以基于已签入的改动来创建补丁,这种方式甚至可以创建降级补丁。

在主干目录上使用TortoiseSVN的Show Log菜单,用Ctrl选中两个版本,右键使用图中标记的菜单:

新窗口中使用File Save存为补丁即可。

补丁的应用非常简单了,就不演示了,选中应用位置使用Apply patch菜单选择应用的补丁即可。


记录,为更好的自己!

http://www.cnblogs.com/ym123/p/4354959.html

SVN与TortoiseSVN实战:补丁详解(转)的更多相关文章

  1. SVN与TortoiseSVN实战:补丁详解

    硬广:<SVN与TortoiseSVN实战>系列已经写了五篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...

  2. SVN与TortoiseSVN实战:文件加锁详解

    硬广:<SVN与TortoiseSVN实战>系列已经写了八篇,本篇是完结篇,整个系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,以技巧性为主. 本篇详解使用Tortoi ...

  3. SVN与TortoiseSVN实战:冲突详解(二)

    硬广:<SVN与TortoiseSVN实战>系列已经写了四篇,第二篇<SVN与TortoiseSVN实战:标签与分支>和第三篇<SVN与TortoiseSVN实战:Tor ...

  4. SVN与TortoiseSVN实战:冲突详解(一)

    硬广:<SVN与TortoiseSVN实战>系列已经写了三篇,第一篇<SVN与TortoiseSVN实战:从入门到精通>,第二篇<SVN与TortoiseSVN实战:标签 ...

  5. SVN与TortoiseSVN实战:属性的奇技淫巧(一)

    硬广:<SVN与TortoiseSVN实战>系列已经写了六篇,本系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解,预计再用三.四篇来结束这个系列. 本篇详解一下SVN的属 ...

  6. SVN与TortoiseSVN实战:属性的奇技淫巧(二)

    硬广:<SVN与TortoiseSVN实战>系列已经写了七篇,本系列结合TortoiseSVN对SVN中容易被忽视的部分进行了详解. 关于属性的奇技淫巧较多,分为两篇来写,第一篇详见< ...

  7. ARP缓存表的构成ARP协议全面实战协议详解、攻击与防御

    ARP缓存表的构成ARP协议全面实战协议详解.攻击与防御 1.4.3  ARP缓存表的构成 在局域网的任何一台主机中,都有一个ARP缓存表.该缓存表中保存中多个ARP条目.每个ARP条目都是由一个IP ...

  8. SVN与TortoiseSVN实战:TortoiseSVN新建及合并分支

    硬广:<SVN与TortoiseSVN实战>系列已经写了两篇,第一篇<SVN与TortoiseSVN实战:从入门到精通>,关于分支和标签的知识介绍可翻阅第二篇<SVN与T ...

  9. SVN与TortoiseSVN实战:标签与分支

    最近在写<IOS性能调优系列>,今天偷个懒,写写SVN与TortoiseSVN实战的第二篇,标签与分支. 第一篇详见<SVN与TortoiseSVN实战:从入门到精通> SVN ...

随机推荐

  1. <转载>使用css让大图片不超过网页宽度

    让大图片不超过网页宽度,让图片不撑破通过CSS样式设置的DIV宽度! 接下来,我们来介绍下网站在开发DIV+CSS的时候会遇到一个问题,在发布一个大图片的时候因为图片过宽会撑破自己设置的div宽度的问 ...

  2. js监听滚动条 回到顶端

    效果:当出现滚动条,且滚动条出现移动时,把回到顶端按钮 显示出来:当滚动条回到顶部时,将回到顶端按钮隐藏. <script type="text/javascript"> ...

  3. TCP与UDP各自特点对比

    UDP和TCP是我们最常用的两种通信方式,下面就两者之间的特点做一个对比: 1.UDP主要用在实时性要求高以及对质量相对较弱的地方,如流媒体. 2.TCP既然是面向连接的,那么运行环境必然要求其保证可 ...

  4. Android API中被忽略的几个函数接口

    1. MotionEvent的几个函数 下面的方法都支持多点触摸,即可以对单个触摸点调用下面的方法 1.1 getPressure() 这个api 可以获取到手指触摸屏幕时候的压力,但是需要硬件和驱动 ...

  5. ABP模块设计

    ABP模块设计 返回ABP系列 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ASP.NET Boilerplate是一个用最佳实践和流行技术 ...

  6. Delphi的TService的輸入桌面切換(服务程序)(windows登录界面如何截图)(使用了OpenDesktop和GetThreadDesktop等API)

    dfm: object CopyDeskService: TCopyDeskService  OldCreateOrder = False  OnCreate = ServiceCreate  OnD ...

  7. 枚举算法总结 coming~^.*

    感谢CJ同学监督╭(╯^╰)╮.从放假到现在都木有更新博客了~噶呜~小娘谨记教诲,每天会更新博客==!! 看了一下POJ训练计划,虽然已经零零散散做了40多道题了,还是从头开始整理一下漏掉的知识点.T ...

  8. 查找MobileSafari WebKit revision number的方法

    Mobile Safari是开源的Mac Safari的iOS版本,然而iOS WebKit并不完全开源,只公开了部分的WebCore和JavaScriptCore.有时需要知道iOS Safari的 ...

  9. django url调度

    Django的url配置相同遵循着DRY(dont repeat yourself)的规则.下面都是官方文档的样例: 首先介绍的是Django怎样处理http的请求: 1.在setting里定义ROO ...

  10. typedef和define具体的具体差别

      1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,仅仅有在编译已被展开的源程序时才会发现可能的错误并报错.比如: #define PI 3. ...