Patch (Unix)
Originalautor (en) | Larry Wall |
---|---|
Entwickler (en) | Paul Eggert, Wayne Davison, David Mackenzie, Andreas Grünbacher |
Erstveröffentlichung | 24. Mai 1985 |
Repository | |
Betriebssystem | Unix und Unix-artig, MSX-dos, Microsoft Windows |
Plattform | Plattformübergreifend |
Typ | Befehl |
Webseite | Savanne |
Das Computerwerkzeug Patch ist ein Unix Programm Das aktualisiert Textdateien gemäß den Anweisungen in einer separaten Datei, die als a genannt wird Patch -Datei. Die Patch -Datei (auch a genannt Patch kurz) ist eine Textdatei, die aus einer Liste von Unterschieden besteht und durch Ausführen der verwandten Erzeugung erzeugt wird diff Programm mit der ursprünglichen und aktualisierten Datei als Argumente. Das Aktualisieren von Dateien mit Patch wird häufig als bezeichnet Anwenden des Patchs oder einfach Patching die Dateien.
Geschichte
Das ursprüngliche Patch -Programm wurde von geschrieben von Larry Wall (wer fuhr fort, das zu erschaffen Perl Programmiersprache) und veröffentlicht an Mod.Sources
[1] (was später wurde Comp.Sources.unix
) im Mai 1985. Eine Variante des Programms (aber nicht die einzige)[2][3][4] ist Teil von GNU -Projekt[5] und wird von der aufrechterhalten FSF.
Nutzungskontext
Patch wurde von einem Programmierer für andere Programmierer entwickelt und wurde häufig zum Aktualisieren von Quellcode in einer neueren Version verwendet. Aus diesem Grund kamen viele Menschen, um Patches mit Quellcode zu verbinden, während Patches tatsächlich auf jeden Text angewendet werden können. Patched Dateien sammeln keinen nicht benötigten Text an, was einige Leute basierend auf der englischen Bedeutung des Wortes wahrnehmen. Patch ist so in der Lage, Text zu entfernen, wie er ihn hinzufügt.
Hier beschriebene Patches sollten nicht mit verwechselt werden Binäre Flecken, obwohl es konzeptionell ähnlich sein kann, werden verteilt, um Binärdateien zu aktualisieren, die das Programm auf eine neue Version umfassen.
Patches in der Softwareentwicklung
Die Diff -Dateien, die als Eingabe für Patch dienen, sind lesbare Textdateien, was bedeutet, dass sie vor der Verwendung leicht überprüft oder geändert werden können.
In Ergänzung zu "diff"Programm, Diffs können auch von anderen Programmen produziert werden, wie z. Subversion, Lebenslauf, RCS, Quecksilber und Git.
Patches waren die entscheidende Komponente vieler Quellensteuerungssysteme, einschließlich Lebenslauf.
Erweiterte Diffs
Wenn fortgeschrittenere Diffs verwendet werden, können Patches auch auf Dateien angewendet werden, die in der Zwischenzeit geändert wurden, solange diese Modifikationen den Patch nicht beeinträchtigen. Dies wird durch die Verwendung von "erreicht"Kontext diffs" und "Einheitliche Diffs"(auch bekannt als" Unidiffs "), die jede Veränderung mit umgeben Kontext, welches der Text unmittelbar vor und nach dem geänderten Teil ist. Patch kann dann diesen Kontext verwenden, um den Region zu lokalisieren, der gepatcht werden soll, auch wenn er durch Änderungen früher in der Datei verschoben wurde, wobei die Zeilennummern in den Diffs als Ausgangspunkt verwendet werden. Aufgrund dieser Eigenschaft sind Kontext und einheitliche Diffs die bevorzugte Form von Patches zur Einreichung bei vielen Softwareprojekten.
Die oben genannten Funktionen machen Diff und Patch besonders beliebt, um Modifikationen an auszutauschen Quelloffene Software. Außenstehende können den neuesten öffentlich verfügbaren Quellcode herunterladen, Änderungen daran vornehmen und sie in Diff -Form an das Entwicklungsteam senden. Mit Diffs kann das Entwicklungsteam die Patches effektiv überprüfen, bevor sie sie anwenden, und kann sie auf eine neuere Codebasis anwenden als die, auf die der externe Entwickler Zugriff hatte.
Verwendungsbeispiele
Um einen Patch zu erstellen, kann man den folgenden Befehl in einer Shell ausführen:
$ Diff -u Oldfile Newfile> mods.diff # -U fordert Diff an, ein einheitliches Diff -Format auszugeben
Um einen Patch anzuwenden, kann man den folgenden Befehl in einer Shell ausführen:
$ Patch <mods.diff
Dadurch soll Patch die Änderungen auf die in den beschriebenen angegebenen Dateien anwenden mods.diff
. Patches zu Dateien in Unterverzeichnissen erfordern die zusätzliche -Pnnumber
Option, wo Nummer ist 1, wenn das Basisverzeichnis des Quellbaums im Diff enthalten ist, und 0 ansonsten.
Patches können mit dem 'rückgängig gemacht werden oder umgekehrt werden.-R
' Möglichkeit:
$ Patch -r <mods.diff
In einigen Fällen, in denen die Datei nicht mit der Version identisch ist, gegen die der Diff erzeugt wurde, kann der Patch nicht sauber angewendet werden. Wenn beispielsweise Textlinien am Anfang eingefügt werden, sind die im Patch genannten Zeilennummern falsch. Patch kann sich von diesem wiederherstellen, indem sie sich in der Nähe von Zeilen betrachten, um den zu Patching des Textes zu verlagern. Es wird sich auch erholen, wenn Linien von Kontext (für Kontext und einheitliche Diffs) werden verändert; Dies wird als beschrieben als Flaum.
Patch -Ports
Ursprünglich für Unix- und Unix-ähnliche Systeme geschrieben, wurde Patch ebenfalls portiert Fenster und viele andere Plattformen. Windows -Patch -Ports werden von bereitgestellt von Gnuwin32 und Unxutils.
A Patch
Befehl ist auch Teil von ASCII's MSX-DOS2-Tools zum MSX-dos Version 2.[6]
Siehe auch
- Patch (Computing)
- Quilt (Software)
- rsync
- xdelta
- Liste der UNIX -Befehle
- IBM Mainframe Utility IebUpdte Ein Mainframe -Patch -Programm, das etwa 20 Jahre zuvor erstellt wurde (ca. ~ 1964).
Verweise
- ^ Larry Wall (24. Mai 1985). "Patch Version 1.3". Google.com unter mod.sources.
- ^ http://cvsweb.openbsd.org/cgi-ner/cvsweb/src/usr.bin/patch/ Archiviert 2017-06-07 bei der Wayback -Maschine OpenBSD Patch Quelle
- ^ https://sourceforge.net/projects/schilytools/files/ Eine Patch -Version existiert in der Sammlung von Schilien -Tools
- ^ Eine Version von Patch wird von IBM, Oracle und der Open Software Foundation gepflegt
- ^ "Patch - kostenloses Softwareverzeichnis". Kostenloses Softwareverzeichnis. Kostenlose Software -Stiftung. 2010-05-01. Abgerufen 2016-05-25.
- ^ MSX-DOS2-Tools-Benutzerhandbuch von ASCII Corporation
Externe Links
- Die einzelne Unix -Spezifikation, Version 4 von Die offene Gruppe - Shell and Utilities Referenz,
- GNU -Diffutile (einschließlich Diff und Patch); Dokumentation
- GNU -Tools für Win32- Win32 -Werkzeuge, einschließlich Diff und Patch
- Dickey, Thomas E. "Diffstat-Histogramm aus Diff-Output" machen ". Archiviert vom Original am 2020-01-22. Abgerufen 2020-05-01