Terminal fredag: Patch and Diff

To av de viktigste verktøyene i programvareutvikling er patch y diff. Det er ikke et mysterium hvordan de fungerer, men jeg tror dette blir et interessant innlegg. 🙂

Begge er veldig kraftige, og dette er akkurat som å berøre overflaten, de har flere verktøy og andre funksjoner. I utgangspunktet med disse to verktøyene kan vi lage versjonskontroll,


diff

Vi refererer til sammenligning, den sammenligner en "original" fil med den "nye", og informerer oss om forskjellene som eksisterer mellom dem. Dette verktøyet lar oss også lage .patch-filer som vi bruker til å lage oppdateringer for programmene våre.


patch

Det er kommandoen som vi bokstavelig talt "lapper" vår originale fil ved å legge til og / eller fjerne linjer i henhold til instruksjonene i .patch-filen.


Det er også vimdiff, som er et visuelt verktøy for å bruke oppdateringer uten behov for en .patch-fil, siden den sammenligner "original" og "new", og på samme fil er det mulig å redigere linje for linje eller hele dokumentet. Dette vil jeg ikke forklare, men jeg synes det fortjener en omtale.


Ejemplo

Nå er moroa. Eksempel!

Dette er tilfelle, vi har et flott manus som ber om navn og alder, hvis du er over 18 år, forteller den deg at du kan stemme, ellers forteller det deg at du ikke kan stemme.

original.sh

#! / bin / bash echo "Skriv inn navnet ditt:" read name echo "Angi alderen din:" read age if [[18 -lt $ age]] og ekko "Hello $ name, du er $ gammel og du kan stemme!" ellers ekko "Hallo $ navn, du er $ gammel og du kan ikke stemme ..." fi
Bilde av koden i Vim

Bilde av koden i Vim

Ferdig, her er det løpende skriptet:

Alt ser ut til å fungere bra

Alt ser ut til å fungere bra

Så som gode brukere vi er, deler vi skriptet vårt med en venn :), men vi får en melding om at det har en feil, at når det er 18, står det at det ikke kan stemme når det skal.

Logikkfeil :(

Logikkfeil 🙁

Nå begynner vi å rette den lille feilen og gjøre noen modifikasjoner ...

new.sh

#! / bin / bash maxAge = 18 echo "Skriv inn navnet ditt:"; les navnet ekko "Skriv din alder:"; les alder hvis [[$ maxAge -le $ age]]; så ekko "Hallo $ navn, du er $ år gammel og du kan stemme!" ellers ekko "Hallo $ navn, du er $ år gammel og du kan ikke stemme ..." fi exit 0
Ny kode skrevet i Vim

Ny kode skrevet inn Vim

Anta at manuset er veldig tungt. Så for ikke å sende hele skriptet igjen, oppretter vi en .patch 😀

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

Og nå har vi vår lapp. Her er en oversikt over Vim:

Slik ser instruksjonene for en .patch ut. I hvitt ble linjene som ikke ble modifisert, i blå de fjernet, i oransje de som ble lagt til.

Slik ser instruksjonene for en .patch ut. I hvitt ble linjene som ikke ble modifisert, i blå de fjernet, i oransje de som ble lagt til.

Og for å bruke den bruker vi ganske enkelt .patch-filen i skriptet som skal patches. Her kalles originalAmigo.sh, som er en eksakt kopi av skriptet original.sh

Venneskript

Venneskript

$ patch originalFriend.sh <patch.patch

Og dette etterlater oss vår fil originalAmigo.sh Så:

Venneskript etter påføring av lapp

Venneskript etter påføring av lapp

Som du kan se er det veldig enkelt å få forskjellene og bruke lappene. Det hele kommer fra meg.

Hilsen folk, vi vil lese neste fredag.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Xerix sa

    Flott, tusen takk 🙂

  2.   engelblad sa

    Hvis du vil ha litt farge, kan du bruke colordiff ^ __ ^

  3.   eliotime3000. sa

    Nå forstår jeg hvordan oppdateringer fungerer i Debian.

  4.   fer_pflores sa

    Hei, jeg vet at systemvarsler kan vises med varsel-send fra konsollen, men det jeg ønsker å gjøre er å kunne planlegge når eller hvor lenge jeg skal varsle meg, er det noen måte å gjøre det? Jeg bruker elementær, som er basert på Ubuntu 12.04, i tilfelle det hjelper, takk

    1.    livlig sa

      Vel, det kan gjøres ved hjelp av systemet cron 😉

      1.    fer_pflores sa

        og hvordan kan det gjøres? Jeg har nettopp lært å bruke kommandoen notify-send

        1.    Wada sa

          Du kan søke etter cron her i bloggen det er mange innlegg om det 🙂

  5.   Joaquin sa

    Veldig bra takk!

  6.   dhunter sa

    Jeg bruker alltid dette for å oppdatere kjernen, jeg laster bare ned oppdateringene og bruker kildene, så jeg slipper å laste ned 80 MB hver utgivelse.