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

Dwa niezbędne narzędzia w tworzeniu oprogramowania to Patch i Diff . Ich działanie nie jest tajemnicą, ale myślę, że to będzie ciekawy wpis. 😉

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


Dostępny jest również vimdiff , wizualne narzędzie do nakładania poprawek bez konieczności używania pliku .patch, ponieważ porównuje ono wersję „oryginalną” i „nową” oraz umożliwia edycję wiersz po wierszu lub całego dokumentu w tym samym pliku. 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

Nowy kod napisany w Vimie

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

I oto nasza łatka. Oto widok w Vimie :

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ć, wystarczy użyć pliku .patch w skrypcie, który ma zostać załatany. W tym przypadku nazywa się on originalAmigo.sh i jest dokładną kopią oryginalnego skryptu .sh .

Scenariusz znajomego

Scenariusz znajomego

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

A nasz oryginalny plik Amigo.sh wygląda tak:

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.


Dodaj jako preferowane źródło w Google