tft每日頭條

 > 科技

 > patchapi

patchapi

科技 更新时间:2024-07-22 18:29:19
摘要

以前一直用 SVN 圖形界面,隻會使用頁面 update, commit ,branch 等功能,前兩天為了打一個docker 鏡像,在centos 上安裝了SVN ,發現命令中有一個 patch,不明所以,因此記錄一下。

定義

patch 中文意思是補丁,顧名思義在版本管理系統中就是給系統的代碼打補丁。公司裡面用的比較少,因為大家一個團隊使用一個SVN 地址提交代碼,但是在全世界程序員參加的開源項目使用這種方式就不行了,需要有專門人來做代碼 review 和 merge。每個人 fork 一個分支,開發完之後生成一個 patch 文件給原項目人員,由他們審查之後決定要不要合并到主幹代碼中(GitHub 裡叫 Pull Request)

放一張流程圖:


patchapi(版本管理系統中的Patch)1


原理

類 Unix 系統中都會自帶 patch 和 diff 程序,可以使用這兩個來演示一下補丁的使用。

我們現在有兩個文件(SVN 系統中是本地跟遠程文件diff,實際也是兩個文件)file1, file2,他們的文件内容分别如下:

$ cat file1 this is file1 nothing more line 3 $ cat file2 this is file2 nothing 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.patch patching file file1 $ cat file1 this is file2 nothing more

如果你同時修改了file1,patch 和file1 内容就可能産生沖突,這回生成file1.rej文件,這就需要你自己手動去解決沖突,合并代碼了。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved