Terminal Biyernes: Patch at Diff

Dalawa sa mga mahahalagang tool sa pag-unlad ng software ay magtagpi y Pagkakaiba. Ito ay hindi isang misteryo kung paano gumagana ang mga ito, ngunit sa tingin ko ito ay magiging isang kawili-wiling post. 

Parehong napakalakas, at ito ay tulad ng pagpindot sa ibabaw, mayroon silang maraming mga kagamitan at iba pang mga pagpapaandar. Karaniwan sa dalawang tool na ito maaari kaming lumikha ng kontrol sa bersyon,


Pagkakaiba

Sumangguni kami sa paghahambing, kinukumpara nito ang isang "orihinal" na file sa "bago", at binabalita sa amin ang mga pagkakaiba-iba na mayroon sa pagitan nila. Pinapayagan din kami ng tool na ito na lumikha ng .patch na mga file na ginagamit namin upang lumikha ng mga patch para sa aming mga programa.


magtagpi

Ito ang utos na kung saan literal naming "patch" ang aming orihinal na file, pagdaragdag at / o pag-aalis ng mga linya alinsunod sa mga tagubiling nakapaloob sa .patch file


Mayroon ding vimdiff, na kung saan ay isang visual na tool upang mag-apply ng mga patch nang hindi nangangailangan ng isang .patch file, dahil inihambing nito ang "orihinal" at "bago" at sa parehong file posible na mai-edit ang linya sa pamamagitan ng linya o ang buong dokumento. Hindi ko ito ipaliwanag ngunit sa palagay ko nararapat itong banggitin.


halimbawa

Ngayon ang saya. Halimbawa!

Ito ang kaso, mayroon kaming mahusay na script na humihiling para sa iyong pangalan at iyong edad, kung ikaw ay higit sa 18 sasabihin sa iyo na maaari kang bumoto, kung hindi sasabihin nito sa iyo na hindi ka maaaring bumoto.

orihinal.sh

#! / bin / bash echo "Ipasok ang iyong pangalan:" basahin ang pangalan ng echo "Ipasok ang iyong edad:" read age if [[18 -lt $ age]] pagkatapos ay i-echo ang "Hello $ name, ikaw ay $ old at maaari kang bumoto! " iba pa ang echo ng "Hello $ name, ikaw ay $ old at hindi ka maaaring bumoto ..." fi
Larawan ng code sa Vim

Larawan ng code sa Vim

Tapos na, narito ang tumatakbo na script:

Mukhang maayos ang lahat

Mukhang maayos ang lahat

Kaya, bilang mabuting mga gumagamit na tayo, ibinabahagi namin ang aming script sa isang kaibigan :), ngunit nakakakuha kami ng isang mensahe na nagsasabing mayroon itong kamalian, na kapag ito ay 18 sinasabi na hindi ito maaaring bumoto kung kailan ito dapat.

Error sa lohika :(

Error sa lohika 

Nagsisimula na kaming iwasto ang maliit na error at gumawa ng ilang pagbabago ...

bago.sh

#! / bin / bash maxAge = 18 echo "Ipasok ang iyong pangalan:"; basahin ang pangalan ng echo na "Isulat ang iyong edad:"; basahin ang edad kung [[$ maxAge -le $ age]]; pagkatapos ay i-echo ang "Hello $ name, ikaw ay $ taong gulang at maaari kang bumoto!" iba pa ang echo ng "Kumusta $ pangalan, ikaw ay $ taong gulang at hindi maaaring bumoto ..." sa exit 0
Bagong code na nakasulat sa Vim

Bagong code na nakasulat sa kalakasan

Kumbaga napakabigat ng script. Kaya, para hindi na maipadala muli ang buong script, gumawa kami ng .patch 

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

At ngayon mayroon kaming aming patch. Narito ang isang pagtingin sa kalakasan:

Ito ang hitsura ng mga tagubilin para sa isang .patch. Sa puti ang mga linya na hindi nabago, sa asul ang mga tinanggal, sa kahel ang mga idinagdag.

Ito ang hitsura ng mga tagubilin para sa isang .patch. Sa puti ang mga linya na hindi nabago, sa asul ang mga tinanggal, sa kahel ang mga idinagdag.

At upang mailapat ito ginagamit lamang namin ang .patch file sa script upang ma-patch. Tawag dito orihinalAmigo.sh, na isang eksaktong kopya ng script orihinal.sh

Script ng kaibigan

Script ng kaibigan

$ patch originalFriend.sh <patch.patch

At iniiwan sa amin ang aming file orihinalAmigo.sh Kaya:

Friend script pagkatapos maglapat ng patch

Friend script pagkatapos maglapat ng patch

Tulad ng nakikita mo napakadali upang makuha ang mga diff at ilapat ang mga patch. Lahat galing sa akin.

Pagbati ng mga tao, babasahin natin sa darating na Biyernes.


Idagdag bilang ginustong mapagkukunan sa Google