Terminal piątek: łatka i różnica

Dwa z podstawowych narzędzi w tworzeniu oprogramowania to Łata y Diff. Nie jest tajemnicą, jak działają, ale myślę, że będzie to ciekawy post. 

Oba są bardzo potężne, a to tylko zarysowanie powierzchni, mają więcej narzędzi i innych funkcji. Zasadniczo za pomocą tych dwóch narzędzi możemy stworzyć kontrolę wersji,


Diff

Mamy na myśli porównanie, które porównuje plik „oryginalny” z „nowym” i informuje nas o różnicach, jakie istnieją między nimi. Narzędzie to pozwala nam również tworzyć pliki .patch, których używamy do tworzenia łatek dla naszych programów.


Łata

Jest to polecenie, za pomocą którego dosłownie „łatamy” nasz oryginalny plik, dodając i/lub usuwając linie zgodnie z instrukcjami zawartymi w pliku .patch


Istnieje również vimdiff, które jest wizualnym narzędziem do stosowania poprawek bez potrzeby posiadania pliku .patch, ponieważ porównuje „oryginał” z „nowym” i na tym samym pliku można edytować linia po linii lub cały dokument. Nie będę tego wyjaśniał, ale myślę, że warto o tym wspomnieć.


Przykład

Teraz zabawna część. Przykład!

Tak właśnie jest, mamy świetny skrypt, który pyta o Twoje imię i wiek, jeśli masz ukończone 18 lat, informuje Cię, że możesz głosować, w przeciwnym razie informuje Cię, że nie możesz głosować.

oryginał.sh

#!/bin/bash echo "Wpisz swoje imię: " read name echo "Wpisz swój wiek: " przeczytaj wiek, jeśli [[ 18 -lt $wiek ]], a następnie echo "Witaj $imię, masz $wiek i możesz głosować! " else echo "Witaj $name, jesteś $stary i nie możesz głosować..." fi
Obraz kodu w Vimie

Obraz kodu w Vimie

Gotowe, oto działający skrypt:

Wszystko wydaje się działać dobrze

Wszystko wydaje się działać dobrze

Jako że jesteśmy dobrymi użytkownikami, udostępniliśmy nasz skrypt znajomemu :), ale otrzymaliśmy wiadomość, że ma on wadę, że gdy ma 18 lat, oznacza to, że nie może głosować, kiedy powinien.

Błąd logiczny :(

Błąd logiczny 

Teraz zaczynamy poprawiać mały błąd i wprowadzać kilka modyfikacji...

nowy.sh

#!/bin/bash maxAge=18 echo "Wpisz swoje imię: "; przeczytaj imię echo "Podaj swój wiek: "; przeczytaj wiek, jeśli [[ $maxAge -le $age ]]; następnie powtórz echo „Witam $name, masz $lat i możesz głosować!” else echo "Witaj $name, masz $lat i nie możesz głosować..." fi exit 0
Nowy kod napisany w Vimie

Wpisany nowy kod Vim

Załóżmy, że scenariusz jest bardzo ciężki. Aby więc uniknąć ponownego wysyłania całego skryptu, tworzymy plik .patch 

$ diff -u oryginalny.sh nowy.sh > patch.patch

A teraz mamy naszą łatkę. Oto widok w Vim:

Tak wyglądają instrukcje dotyczące poprawki. Na biało linie, które nie zostały zmodyfikowane, na niebiesko te usunięte, na pomarańczowo te dodane.

Tak wyglądają instrukcje dotyczące poprawki. Na biało linie, które nie zostały zmodyfikowane, na niebiesko te usunięte, na pomarańczowo te dodane.

Aby go zastosować, po prostu używamy pliku .patch w skrypcie, który ma zostać załatany. Tutaj to się nazywa oryginałAmigo.sh, który jest dokładną kopią skryptu oryginał.sh

Scenariusz znajomego

Scenariusz znajomego

$ łatka oryginalnyPrzyjaciel.sh < łatka.łatka

I tak zostajemy z naszym plikiem oryginałAmigo.sh Więc:

Skrypt kolegi po zastosowaniu patcha

Skrypt kolegi po zastosowaniu patcha

Jak widać bardzo łatwo jest uzyskać różnice i zastosować łatki. To wszystko ode mnie.

Pozdrawiam ludzi, do zobaczenia w przyszły piątek.