龙空技术网

版本管理系统中的Patch

编程life 384

前言:

现时我们对“centos安装patch”大概比较注意,大家都需要分析一些“centos安装patch”的相关内容。那么小编在网摘上搜集了一些关于“centos安装patch””的相关资讯,希望我们能喜欢,朋友们一起来学习一下吧!

摘要

以前一直用 SVN 图形界面,只会使用页面 update, commit ,branch 等功能,前两天为了打一个docker 镜像,在centos 上安装了SVN ,发现命令中有一个 patch,不明所以,因此记录一下。

定义

patch 中文意思是补丁,顾名思义在版本管理系统中就是给系统的代码打补丁。公司里面用的比较少,因为大家一个团队使用一个SVN 地址提交代码,但是在全世界程序员参加的开源项目使用这种方式就不行了,需要有专门人来做代码 review 和 merge。每个人 fork 一个分支,开发完之后生成一个 patch 文件给原项目人员,由他们审查之后决定要不要合并到主干代码中(GitHub 里叫 Pull Request)

放一张流程图:



原理

类 Unix 系统中都会自带 patch 和 diff 程序,可以使用这两个来演示一下补丁的使用。

我们现在有两个文件(SVN 系统中是本地跟远程文件diff,实际也是两个文件)file1, file2,他们的文件内容分别如下:

$ cat file1this is file1nothing moreline 3$ cat file2this is file2nothing more

使用 diff 比较两个文件:

$ diff -u file1 file2--- file1       2018-09-07 10:57:28.853583937 +0800+++ file2       2018-09-07 10:57:06.062578590 +0800@@ -1,3 +1,2 @@-this is file1+this is file2 nothing more-line 3

这就是 patch 文件的格式,可以看到是使用特殊的符号来标识每行内容的增减,修改,最开始是文件的时间戳信息。我们创建一个 file-diff.patch文件,然后就可以用patch 程序来打上补丁。

$ diff -u file1 file2 > file-diff.patch$ patch file1 file-diff.patchpatching file file1$ cat file1this is file2nothing more

如果你同时修改了file1,patch 和file1 内容就可能产生冲突,这回生成file1.rej文件,这就需要你自己手动去解决冲突,合并代码了。

标签: #centos安装patch