軟體開發中兩個必不可少的工具是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 中的代碼圖像
完成,這是運行腳本:
似乎一切正常
所以,我們是好用戶,我們將腳本分享給朋友:),但是我們收到一條消息,說它有一個錯誤,當它是 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編寫的新程式碼
假設腳本非常重。因此,為了避免再次發送整個腳本,我們創建一個 .patch
$ diff -u original.sh new.sh > patch.patch
現在我們有了補丁。以下是Vim中的視圖:
這就是.patch的說明。 白色的線條未修改,藍色的線條已刪除,橙色的線條已添加。
要套用此補丁,我們只需在要修補的腳本中使用 .patch 檔案即可。這裡它名為originalAmigo.sh,是original.sh腳本的完全相同的副本。
朋友的劇本
$補丁originalFriend.sh < patch.patch
這樣,我們的原始Amigo.sh檔案就變成了這樣:
應用補丁後朋友的腳本
正如您所看到的,獲取差異並應用補丁非常容易。 這一切都來自於我。
大家好,我們下週五讀書。