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
Fertig, hier ist das laufende Skript:
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
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 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.
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
$ patch originalFriend.sh <patch.patch
Und das lässt uns unsere Akte originalAmigo.sh Damit:
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.