週五候機樓:補丁程序和差異

軟體開發中兩個必不可少的工具是Patch和Diff。它們的運作方式並不神秘,但我認為寫這篇文章會很有趣。 😉

兩者都非常強大,這只是表面現象,它們還有更多實用程序和其他功能。 基本上用這兩個工具我們可以創建版本控制,


變化

我們指的是比較,它將“原始”文件與“新”文件進行比較,並告訴我們它們之間存在的差異。 該工具還允許我們創建 .patch 文件,我們可以使用它來為我們的程序創建補丁。


打補丁

這是我們從字面上“修補”原始文件的命令,根據 .patch 文件中包含的說明添加和/或刪除行。


此外,還有vimdiff,這是一個無需 .patch 檔案即可套用修補程式的視覺化工具,因為它會比較「原始」版本和「新」版本,並允許你逐行編輯或在同一檔案中編輯整個文件。我不會詳細解釋它,但我認為值得一提。


例子

現在有趣了。 例子!

是這樣的,我們有一個很酷的腳本,它會詢問你的姓名和年齡,如果你超過 18 歲,它會告訴你可以投票,否則它會告訴你不能投票。

原始.sh

#!/bin/bash echo "輸入你的名字:" read name echo "輸入你的年齡:" readage if [[ 18 -lt $age ]] then echo "你好$name,你是$age,你可以投票! ” else echo "Hello $name, you are $age and can't vote..." fi
Vim 中的代碼圖像

Vim 中的代碼圖像

完成,這是運行腳本:

似乎一切正常

似乎一切正常

所以,我們是好用戶,我們將腳本分享給朋友:),但是我們收到一條消息,說它有一個錯誤,當它是 18 時,它說它不能投票,而它應該投票。

邏輯錯誤:(

邏輯錯誤

現在我們開始糾正這個小錯誤並進行一些修改......

新的.sh

#!/bin/bash maxAge=18 echo "輸入你的名字:"; read name echo "請輸入您的年齡:"; 讀取年齡 if [[ $maxAge -le $age ]]; 然後 echo“你好 $name,你已經 $age 歲了,你可以投票了!” else echo "你好 $name,你已經 $age 歲了,不能投票..." fi exit 0
用 Vim 編寫的新代碼

用Vim編寫的新程式碼

假設腳本非常重。因此,為了避免再次發送整個腳本,我們創建一個 .patch 

$ diff -u original.sh new.sh > patch.patch

現在我們有了補丁。以下是Vim中的視圖:

這就是.patch的說明。 白色的線條未修改,藍色的線條已刪除,橙色的線條已添加。

這就是.patch的說明。 白色的線條未修改,藍色的線條已刪除,橙色的線條已添加。

要套用此補丁,我們只需在要修補的腳本中使用 .patch 檔案即可。這裡它名為originalAmigo.sh,是original.sh腳本的完全相同的副本。

朋友的劇本

朋友的劇本

$補丁originalFriend.sh < patch.patch

這樣,我們的原始Amigo.sh檔案就變成了這樣:

應用補丁後朋友的腳本

應用補丁後朋友的腳本

正如您所看到的,獲取差異並應用補丁非常容易。 這一切都來自於我。

大家好,我們下週五讀書。


在 Google 中將其新增為首選來源