您的位置:首页 > 其它

svn版本管理软件——svn发布补丁和打补丁

2017-09-04 10:42 507 查看
svn和git一样有发布补丁和打补丁的功能,发布补丁是用在一个小型bug或小型功能的改进上,而尚未到提交版本的时候。在提交版本修改代码的工作尚未完成的时候,突然急需修复一个功能或bug的时候这时就可以将修改后的代码以打补丁的形式发布。


svn创建补丁

svn创建补丁在右键菜单的svn功能列表中,创建补丁的位置和鼠标在svn中的哪个文件夹或文件夹内的空白区域右键调出的svn菜单功能很重要,比如在svn工作区中的某文件夹codefile/目录下单击右键创建svn补丁,那这个补丁要使用,只能将该补丁放在需要打补丁的版本的codefile/目录下应用才能打上补丁,不然其他的方法都是错误的,git也是如此。svn补丁的后缀名为.patch。

svn补丁和git相比还多了一个使用目的,即svn为成员受限的形式,有的成员只有只读权限,不能提交修改的代码,那么他们修改代码后将改动打包成补丁的形式,发送给更高级的成员,给这些成员审核代码并将代码合并进版本库中。


1、将修改的内容创建补丁

在修改的文件或文件夹下单击右键,点击创建补丁,选中需要创建补丁的文件,保存即可,使用git形式的保存会有些不同,但不影响打补丁。如下图所示。








svn的补丁形式如下所示

Index: patch.txt
=============================================
--- patch.txt   (版本 4)
+++ patch.txt   (工作副本)
@@ -1,3 +1,5 @@
patch diff test

patch is 2
+
+svn patch
\ No newline at end of file


2、将svn的某个提交创建补丁

在显示日志中选择“已标准差异格式显示改变”,即可显示该提交所改变的内容,形式和的一   模一样,将文本另存为保存到.patch文件中即可,如下图所示。






svn打补丁

将补丁放置在需要打补丁的工作区,放置要放置在相应的位置上,在哪个文件夹创建的补丁就放置在这个文件夹下。
选中补丁,单击右键,应用补丁,在弹出的编辑器中选择修补全部项目,也可以修补单个文件项目,如下图所示。






打上使用git形式创建的补丁会有些不同,因为该目录会出错,打补丁不正常,建议创建补丁时不使用git形式补丁,属于svn的bug。除非手动修改该补丁的路径关联,将路径绝对路径的顶级文件去掉,这里不介绍这麻烦的步骤。

用svn打补丁有个bug,即该补丁可以继续打补丁,将内容往下覆盖。而git会 明显的提示,不会出现这种bug。


如补丁文件如下所示

Index: patch.txt
==============================================
--- patch.txt   (版本 7)
+++ patch.txt   (工作副本)
@@ -1,3 +1,5 @@
patch diff test

+svn diff test
+
svn patch
\ No newline at end of file


多次应用该补丁后文件会变成如下图所示。



svn撤销补丁

svn图形界面下没有撤销补丁的选项,只能使用svn还原,如下图所示。




打补丁或更新代码造成的冲突解决

svn打补丁如果有冲突的话会系统会拒绝打补丁,并且补丁只会进行叠加。

更新代码会照成冲突,就是更新的代码改动刚好与本地工作区的改动照成冲突,如下图所示。




冲突的表现形式如下所示。

<<<<<<< .mine
patch diff test 2016.01.08 project test
||||||| .r8
patch diff test 2016.01.08 test1
=======
patch diff test 2016.01.08 master test
>>>>>>> .r9


.mine代表当前工作区的代码版本的改动
.r8代表当前版本的上一个版本的改动
.r9代表最新版本的改动


svn会将这三个改动以完整文件的形式保存将版本变成后缀名,同时该文件的svn重载图标会改变,如下图所示。



1、手动修改,和git的修改一样,将冲突标志去掉,保存最新的修改结果,修改完成后单击右键调出svn菜单,选择解决即可,svn会将自动创建的临时对比文件删除。如下图所示。



2、系统修改,选择文件,调出svn菜单,选择编辑冲突,如下图所示。



在已合并文本中选择冲突部分,单击右键弹出菜单,菜单有多种解决方式,如下图所示。



冲突解决后保存文件,会弹出提示标记为已解决,如图5.4.0.6所示。



此时退出编辑器,svn会将自动创建的临时对比文件删除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  svn 管理