Terminalni petak: Patch and Diff

Dva su bitna alata u razvoju softvera Patch y diff. Nije misterij kako rade, ali mislim da će ovo biti zanimljiv post. 

Obje su vrlo moćne, a to je baš poput dodirivanja površine, imaju više uslužnih programa i drugih funkcija. U osnovi s ova dva alata možemo stvoriti kontrolu verzija,


diff

Pozivamo se na usporedbu, ona uspoređuje "izvornu" datoteku s "novom" i informira nas o razlikama koje postoje između njih. Ovaj nam alat također omogućuje stvaranje .patch datoteka koje koristimo za stvaranje zakrpa za naše programe.


Patch

To je naredba kojom doslovno "krpamo" svoju izvornu datoteku, dodajući i / ili uklanjajući retke u skladu s uputama u .patch datoteci


Tu je također vimdiff, koji je vizualni alat za primjenu zakrpa bez potrebe za .patch datotekom, jer uspoređuje "izvornik" i "novi", a na istoj datoteci moguće je uređivati ​​redak po redak ili cijeli dokument. To neću objašnjavati, ali mislim da to zaslužuje spomenuti.


primjer

Sad je zabava. Primjer!

To je slučaj, imamo sjajnu skriptu koja traži vaše ime i vaše godine; ako ste stariji od 18 godina, govori vam da možete glasati, inače vam govori da ne možete glasati.

original.š

#! / bin / bash echo "Unesite svoje ime:" read name echo "Unesite svoju dob:" read age if [[18 -lt $ age]] then echo "Pozdrav $ ime, stari ste $ i možete glasati! " else echo "Hello $ name, ti si $ star i ne možeš glasati ..." fi
Slika koda u Vimu

Slika koda u Vimu

Gotovo, evo skripte koja se izvodi:

Čini se da sve funkcionira u redu

Čini se da sve funkcionira u redu

Dakle, kao dobri korisnici kakvi jesmo, svoju skriptu dijelimo s prijateljem :), ali dobivamo poruku u kojoj se kaže da ima manu, da kada napuni 18 godina kaže da ne može glasati kada bi trebao.

Logička pogreška :(

Logička greška 

Sada počinjemo ispravljati malu pogrešku i napraviti nekoliko izmjena ...

novo.š

#! / bin / bash maxAge = 18 echo "Unesite svoje ime:"; pročitajte odjek imena "Napišite svoje godine:"; pročitati dob ako [[$ $ maxAge -le $ age]]; zatim odjeknite "Zdravo $ ime, imaš $ godina i možeš glasati!" else echo "Hello $ name, imaš $ godina i ne možeš glasati ..." fi izlaz 0
Novi kod napisan u Vim

Novi kôd napisan na energija

Pretpostavimo da je scenarij vrlo težak. Dakle, kako ne bismo ponovno slali cijelu skriptu, kreiramo .patch 

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

I sad imamo svoj flaster. Ovdje pogled u energija:

Ovako izgledaju upute za .patch. U bijeloj crti linije koje nisu modificirane, u plavoj one uklonjene, u narančastoj one dodane.

Ovako izgledaju upute za .patch. U bijeloj crti linije koje nisu modificirane, u plavoj one uklonjene, u narančastoj one dodane.

A da bismo je primijenili, jednostavno koristimo datoteku .patch u skripti koju ćemo zakrpati. Ovdje se zove originalAmigo.sh, što je točna kopija skripte original.š

Prijateljska skripta

Prijateljska skripta

$ patch originalFriend.sh <patch.patch

I ovo nam ostavlja našu datoteku originalAmigo.sh Tako:

Skripta prijatelja nakon primjene zakrpe

Skripta prijatelja nakon primjene zakrpe

Kao što vidite, vrlo je jednostavno dobiti razlike i primijeniti zakrpe. Sve je to od mene.

Pozdrav ljudi, čitat ćemo sljedeći petak.


Dodaj kao preferirani izvor na Googleu