Terminal Freitag: Patch und Diff

Zwei der wesentlichen Werkzeuge in der Softwareentwicklung sind Patch y Diff. Es ist kein Geheimnis, wie sie funktionieren, aber ich denke, dass dies ein interessanter Beitrag sein wird. 

Beide sind sehr leistungsfähig, und dies ist wie das Berühren der Oberfläche, sie haben mehr Dienstprogramme und andere Funktionen. Grundsätzlich können wir mit diesen beiden Tools eine Versionskontrolle erstellen.


Diff

Wir beziehen uns auf den Vergleich, er vergleicht eine "ursprüngliche" Datei mit der "neuen" und informiert uns über die Unterschiede, die zwischen ihnen bestehen. Mit diesem Tool können wir auch .patch-Dateien erstellen, mit denen wir Patches für unsere Programme erstellen.


Patch

Dies ist der Befehl, mit dem wir unsere Originaldatei buchstäblich "patchen" und Zeilen gemäß den Anweisungen in der .patch-Datei hinzufügen und / oder entfernen


Es gibt auch vimdiffDies ist ein visuelles Tool zum Anwenden von Patches, ohne dass eine .patch-Datei erforderlich ist, da es "Original" und "Neu" vergleicht und in derselben Datei Zeile für Zeile oder das gesamte Dokument bearbeitet werden kann. Dies werde ich nicht erklären, aber ich denke, es verdient eine Erwähnung.


Ejemplo

Jetzt macht es Spaß. Beispiel!

Dies ist der Fall. Wir haben ein großartiges Skript, in dem Sie nach Ihrem Namen und Ihrem Alter gefragt werden. Wenn Sie über 18 Jahre alt sind, erfahren Sie, dass Sie abstimmen können. Andernfalls können Sie nicht abstimmen.

original.sh

#! / bin / bash echo "Geben Sie Ihren Namen ein:" read name echo "Geben Sie Ihr Alter ein:" read age if [[18 -lt $ age]] dann echo "Hallo $ name, Sie sind $ alt und können abstimmen!" sonst echo "Hallo $ name, du bist $ alt und kannst nicht wählen ..." fi
Bild des Codes in Vim

Bild des Codes in Vim

Fertig, hier ist das laufende Skript:

Alles scheint gut zu funktionieren

Alles scheint gut zu funktionieren

Als gute Benutzer teilen wir unser Skript mit einem Freund :), aber wir erhalten eine Nachricht, dass es einen Fehler hat und dass es mit 18 Jahren nicht abstimmen kann, wenn es sollte.

Logikfehler :(

Logikfehler 

Jetzt beginnen wir, den kleinen Fehler zu korrigieren und einige Änderungen vorzunehmen ...

new.sh

#! / bin / bash maxAge = 18 echo "Geben Sie Ihren Namen ein:"; Name lesen Echo "Schreiben Sie Ihr Alter:"; Alter lesen, wenn [[$ maxAge -le $ age]]; dann echo "Hallo $ name, du bist $ Jahre alt und kannst abstimmen!" sonst echo "Hallo $ name, du bist $ Jahre alt und kannst nicht wählen ..." fi exit 0
Neuer Code in Vim geschrieben

Neuer Code geschrieben in Vim

Angenommen, das Skript ist sehr umfangreich. Um zu vermeiden, dass das gesamte Skript erneut gesendet wird, erstellen wir einen .patch 

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

Und jetzt haben wir unseren Patch. Hier ist ein Blick auf Vim:

So sehen die Anweisungen für ein .patch aus. In Weiß die nicht modifizierten Linien, in Blau die entfernten, in Orange die hinzugefügten.

So sehen die Anweisungen für ein .patch aus. In Weiß die nicht modifizierten Linien, in Blau die entfernten, in Orange die hinzugefügten.

Und um es anzuwenden, verwenden wir einfach die .patch-Datei in dem Skript, das gepatcht werden soll. Hier heißt originalAmigo.shDies ist eine exakte Kopie des Skripts original.sh

Freundskript

Freundskript

$ patch originalFriend.sh <patch.patch

Und das lässt uns unsere Akte originalAmigo.sh Damit:

Freundeskript nach dem Anwenden des Patches

Freundeskript nach dem Anwenden des Patches

Wie Sie sehen können, ist es sehr einfach, die Unterschiede zu ermitteln und die Patches anzuwenden. Es ist alles von mir.

Grüße Leute, wir werden nächsten Freitag lesen.


Als bevorzugte Quelle in Google hinzufügen