Terminal fredag: Patch og Diff

To af de vigtige værktøjer i softwareudvikling er patch y Diff. Det er ikke et mysterium, hvordan de fungerer, men jeg tror, ​​dette vil være 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

Billede af koden i Vim

Udført, her er det kørende script:

Alt ser ud til at fungere fint

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 :(

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 i Vim

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.

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

Vensscript

$ patch originalFriend.sh <patch.patch

Og dette efterlader os vores fil originalAmigo.sh Så:

Vensscript efter påføring af patch

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.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.

  1.   Xerix sagde han

    Fantastisk, meget tak 🙂

  2.   engelblad sagde han

    Hvis du vil have nogle farver, skal du bruge colordiff ^ __ ^

  3.   eliotime3000 sagde han

    Nu forstår jeg, hvordan programrettelser fungerer i Debian.

  4.   fer_pflores sagde han

    Hej, jeg ved, at systemmeddelelser kan vises med notify-send fra konsollen, men hvad jeg gerne vil gøre er at være i stand til at planlægge, hvornår eller hvor længe jeg skal vise mig en meddelelse, er der nogen måde at gøre det på? Jeg bruger elementær, som er baseret på Ubuntu 12.04, hvis det hjælper tak

    1.    Elav sagde han

      Nå, det kan gøres ved hjælp af systemet cron 😉

      1.    fer_pflores sagde han

        og hvordan kan det gøres? Jeg lærte næsten ikke, hvordan man bruger kommandoen notify-send

        1.    ulempe sagde han

          Du kan søge efter cron her i bloggen, der er mange indlæg om det 🙂

  5.   Joaquin sagde han

    Meget godt tak!

  6.   djæger sagde han

    Jeg bruger altid dette til at opdatere kernen, jeg downloader kun patches og gælder for kilderne, så jeg behøver ikke downloade 80 MB hver udgivelse.