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

軟件開發中兩個重要的工具是 打補丁 y 變化。 它們的工作原理並不神秘,但我認為這將是一篇有趣的文章。 🙂

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


變化

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


打補丁

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


也有 維姆迪夫,這是一個無需 .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 文件來進行修補。 這裡叫做 原始Amigo.sh,這是腳本的精確副本 原始.sh

朋友的劇本

朋友的劇本

$補丁originalFriend.sh < patch.patch

這留下了我們的文件 原始Amigo.sh 所以:

應用補丁後朋友的腳本

應用補丁後朋友的腳本

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

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


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。

  1.   施樂 他說:

    太好了,非常感謝你 🙂

  2.   天使之刃 他說:

    如果你想要一些顏色,請使用 colordiff ^__^

  3.   埃利奧時間3000 他說:

    現在我了解了 Debian 中的補丁是如何工作的。

  4.   弗洛雷斯 他說:

    您好,我知道可以通過控制台的通知發送來顯示系統通知,但我想做的是能夠安排在什麼時間或多長時間向我顯示通知,有辦法做到嗎? 我使用elementary,它基於Ubuntu 12.04,如果有幫助的話,謝謝

    1.    拉夫 他說:

      嗯,可以使用系統 cron 來完成😉

      1.    弗洛雷斯 他說:

        怎樣才能做到這一點? 我剛剛學會瞭如何使用notify-send命令

        1.    世界反興奮劑機構 他說:

          你可以在博客上搜索 cron,有很多關於它的帖子 🙂

  5.   華金 他說:

    非常好謝謝!

  6.   獵人 他說:

    我總是用它來更新內核,我只是下載補丁並應用到源代碼,所以我不必每個版本下載 80mb。