Terminál piatok: Patch a Diff

Dva základné nástroje vo vývoji softvéru sú Patch a Diff . Ako fungujú, nie je záhadou, ale myslím si, že toto bude zaujímavý príspevok. 😉

Oba sú veľmi výkonné a je to ako dotyk povrchu, majú viac obslužných programov a ďalších funkcií. V zásade pomocou týchto dvoch nástrojov môžeme vytvoriť správu verzií,


Diff

Odkazujeme na porovnanie, porovnáva sa „pôvodný“ súbor s „novým“ súborom a informuje nás o rozdieloch, ktoré medzi nimi existujú. Tento nástroj nám tiež umožňuje vytvárať súbory .patch, ktoré používame na vytváranie opráv pre naše programy.


Náplasť

Je to príkaz, ktorým doslova „opravíme“ náš pôvodný súbor, pridáme alebo odstránime riadky podľa pokynov obsiahnutých v súbore .patch


Existuje aj vimdiff , vizuálny nástroj na aplikáciu záplat bez potreby súboru .patch, ktorý porovnáva „pôvodnú“ a „novú“ verziu a umožňuje vám upravovať riadok po riadku alebo celý dokument v rámci toho istého súboru. Nebudem to vysvetľovať, ale myslím si, že to stojí za zmienku.


Príklad

Teraz je zábava. Príklad!

V takom prípade máme vynikajúci scenár, ktorý sa pýta na vaše meno a váš vek. Ak máte viac ako 18 rokov, hovorí vám, že môžete voliť, inak hovorí, že nemôžete voliť.

originál.sh

#! / bin / bash echo "Zadajte svoje meno:" prečítajte si echo označíte "Zadajte svoj vek:" prečítajte vek, ak [[18 -lt $ vek]] potom ozvite sa "Ahoj $ meno, máš $ starý a môžeš voliť!" else echo "Ahoj $ meno, máš $ rokov a nemôžeš voliť ..." fi
Obrázok kódu vo Vime

Obrázok kódu vo Vime

Hotovo, tu je spustený skript:

Zdá sa, že všetko funguje dobre

Zdá sa, že všetko funguje dobre

Ako dobrí používatelia teda sme, zdieľame náš skript s priateľom :), ale zobrazí sa nám správa, že má chybu, že keď má 18 rokov, hovorí, že nemôže hlasovať, keď má.

Logická chyba :(

Logická chyba 

Teraz začneme opravovať malú chybu a urobíme niekoľko úprav ...

nový.sh

#! / bin / bash maxAge = 18 echo "Zadajte svoje meno:"; prečítať echo mena „Napíš svoj vek:“; čítať vek, ak [[$ maxAge -le $ age]]; potom ozvite „Ahoj $ meno, máš $ rokov a môžeš hlasovať!“ else echo "Dobrý deň, $ meno, ste $ starí a nemôžete hlasovať ..." fi výstup 0
Nový kód napísaný vo Vime

Nový kód napísaný vo Vime

Predpokladajme, že skript je veľmi ťažký. Aby sme sa vyhli opätovnému odosielaniu celého skriptu, vytvoríme .patch 

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

A teraz máme náš patch. Tu je pohľad vo Vime :

Takto vyzerajú pokyny pre .patch. Biele čiary, ktoré neboli zmenené, modrou farbou tie, ktoré boli odstránené, oranžovou farbou, ktoré boli pridané.

Takto vyzerajú pokyny pre .patch. Biele čiary, ktoré neboli zmenené, modrou farbou tie, ktoré boli odstránené, oranžovou farbou, ktoré boli pridané.

Na jeho použitie jednoducho použijeme súbor .patch v skripte, ktorý chceme opraviť. Tu sa nazýva originalAmigo.sh a je to presná kópia skriptu original.sh .

Priateľ skript

Priateľ skript

$ patch originalFriend.sh <patch.patch

A náš pôvodný súbor Amigo.sh tak vyzerá takto:

Priateľský skript po použití opravy

Priateľský skript po použití opravy

Ako vidíte, je veľmi ľahké zohnať rozdiely a použiť opravy. Všetko je to odo mňa.

Zdravím ľudí, prečítame si budúci piatok.


Pridať ako preferovaný zdroj v Google