To af de vigtige værktøjer i softwareudvikling er patch y Diff. Det er ikke et mysterium, hvordan de fungerer, men jeg tror, det bliver et interessant indlæg.
Begge er meget kraftfulde, og det er ligesom at røre ved overfladen, de har flere hjælpeprogrammer og andre funktioner. Dybest set med disse to værktøjer kan vi oprette versionskontrol,
Diff
Vi henviser til sammenligning, den sammenligner en "original" fil med den "nye" og informerer os om de forskelle, der findes mellem dem. Dette værktøj giver os også mulighed for at oprette .patch-filer, som vi bruger til at oprette programrettelser til vores programmer.
patch
Det er kommandoen, hvormed vi bogstaveligt talt "lapper" vores originale fil, tilføjer og / eller fjerner linjer i henhold til instruktionerne i .patch-filen.
Der er også vimdiff, som er et visuelt værktøj til at anvende programrettelser uden behov for en .patch-fil, da den sammenligner "original" og "ny", og på samme fil er det muligt at redigere linje for linje eller hele dokumentet. Dette vil jeg ikke forklare, men jeg synes, det fortjener en omtale.
Ejemplo
Nu er det sjovt. Eksempel!
Dette er tilfældet, vi har et godt script, der beder om dit navn og din alder. Hvis du er over 18 år, fortæller det dig, at du kan stemme, ellers fortæller det dig, at du ikke kan stemme.
original.sh
#! / bin / bash ekko "Indtast dit navn:" læs navn ekko "Indtast din alder:" læs alder hvis [[18 -lt $ alder]] så ekko "Hej $ navn, du er $ gammel og du kan stemme!" ellers ekko "Hej $ navn, du er $ gammel og kan ikke stemme ..." fi
Billede af koden i Vim
Udført, her er det kørende script:
Alt ser ud til at fungere fint
Så som gode brugere, vi er, deler vi vores script med en ven :), men vi får en besked om, at det har en fejl, at når det er 18, står det, at det ikke kan stemme, når det skal.
Logisk fejl
Nu begynder vi at rette den lille fejl og foretage et par ændringer ...
new.sh
#! / bin / bash maxAge = 18 echo "Indtast dit navn:"; læse navn ekko "Skriv din alder:"; læs alder hvis [[$ maxAge -le $ age]]; derefter ekko "Hej $ navn, du er $ år gammel, og du kan stemme!" ellers ekko "Hej $ navn, du er $ gammel, og du kan ikke stemme ..." fi exit 0
Ny kode skrevet ind vim
Antag, at manuskriptet er meget tungt. Så for ikke at sende hele scriptet igen, opretter vi en .patch
$ diff -u original.sh new.sh> patch.patch
Og nu har vi vores plaster. Her en visning i vim:
Sådan ser instruktionerne til en .patch ud. I hvidt blev de linjer, der ikke blev ændret, i blå de fjernede, i orange de tilføjede.
Og for at anvende det bruger vi simpelthen .patch-filen i scriptet, der skal patches. Her kaldes originalAmigo.sh, som er en nøjagtig kopi af scriptet original.sh
Vensscript
$ patch originalFriend.sh <patch.patch
Og dette efterlader os vores fil originalAmigo.sh Så:
Vensscript efter påføring af patch
Som du kan se er det meget let at få diffs og anvende plasterne. Det hele kommer fra mig.
Hilsen folk, vi læser næste fredag.