Heim  >  Artikel  >  System-Tutorial  >  Vertiefendes Verständnis von Patch-Dateien: Generierung von Diff-Anweisungen und Analyse gemeinsamer Parameter

Vertiefendes Verständnis von Patch-Dateien: Generierung von Diff-Anweisungen und Analyse gemeinsamer Parameter

PHPz
PHPzOriginal
2024-06-27 08:35:46501Durchsuche

深入了解 patch 文件:diff 指令生成与常用参数解析

Patch-Dateien werden durch Diff-Anweisungen (linuxdiff, svndiff, gitdiff, gitformat-patch) generiert.

Lassen Sie uns zunächst den Diff-Befehl und seine allgemeinen Parameter vorstellen:

Unterschied:

Die Funktion von Diff besteht darin, die Unterschiede zwischen zwei Dateien zu vergleichen und sie dann aufzuzeichnen. Dies ist der sogenannte Diff-Patch. Satzformat: diff [Option] Quelldatei (Ordner) Zieldatei (Ordner) Das Linux-Betriebssystem ist gut. Es besteht darin, die Quelldatei (Ordner) zu patchen. Der Begriff lautet „Upgrade“. Nachfolgend werden die drei am häufigsten verwendeten Optionen vorgestellt: -r ist eine rekursive Option. Wenn Sie diese Option

linux auf patch

setzen, vergleicht diff alle entsprechenden Dateien in den Quellcodeverzeichnissen zweier verschiedener Versionen, einschließlich der Unterverzeichnisdateien. Die Option -N stellt sicher, dass die Patchdatei die Situation, in der die Datei erstellt oder gelöscht wurde, korrekt verarbeitet.

Die Option

-u erstellt Patchdateien in einem einheitlichen Format, das kompakter als das Standardformat ist.

2、Patch

————————————————————————

linux 打patch_linux 打patch_linux 打patchNAME

Patch-Applyadifffiletoanoriginal

SYNOPSIS

patch[Optionen][Originaldatei[Patchdatei]]

aber normalerweise nur

Patch-Pnum

————————————————————————

Einfach ausgedrückt besteht Patch darin, den von diff erstellten Patch zu verwenden, um die Quelldatei (Ordner) und die Zieldatei (Ordner) zu konvertieren. Das bedeutet, dass Sie eine Quelldatei (Ordner) -> Zieldatei (Ordner) oder eine Zieldatei (Ordner) -> Quelldatei (Ordner) haben können. Hier sind einige der am häufigsten verwendeten Optionen:

Die Option

-p0 besteht darin, die Zieldatei (Ordner) aus dem aktuellen Verzeichnis zu finden

Die Option

-p1 ignoriert das Verzeichnis der ersten Ebene und beginnt mit der Suche im aktuellen Verzeichnis.

Ähnliche Option -p2 sollte das Verzeichnis der zweiten Ebene ignorieren;

......

***************************************************** ***** *************

Hier ist ein Beispiel:

---old/modules/pcitableMonSep2711:03:561999

+++new/modules/pcitableTueDec1920:05:412000

Wenn Sie den Parameter -p0 verwenden, bedeutet dies, dass Sie im aktuellen Verzeichnis einen Ordner namens old finden und unter den Modulen nach der pcitable-Datei suchen, um den Patch-Vorgang auszuführen.

Wenn Sie den Parameter -p1 verwenden, bedeutet dies, dass Sie das Verzeichnis der ersten Ebene (dh unabhängig vom alten) ignorieren, im aktuellen Verzeichnis nach dem Modulordner suchen und darunter nach pcitable suchen. Voraussetzung hierfür ist, dass das aktuelle Verzeichnis das Verzeichnis sein muss, in dem sich die Module befinden. Die Diff-Patch-Datei kann sich an einem beliebigen Ort befinden, solange der Pfad zur Diff-Patch-Datei angegeben wird. Tatsächlich können Sie relative Pfade oder absolute Pfade verwenden. Normalerweise verwende ich jedoch relative Pfade.

***************************************************** ***** *************

Die Option

-E gibt an, dass eine leere Datei gelöscht wird, wenn sie gefunden wird

Die Option

-R gibt an, dass die „neuen“ Dateien und die „alten“ Dateien in der Patch-Datei nun ausgetauscht werden sollen (eigentlich geht es darum, die neue Version zu patchen und zur alten Version zu machen)

linux 打patch_linux 打patch_linux 打patch

Struktur der Patchdatei

Patchkopf

Der Patch-Header besteht aus zwei Zeilen, die mit ---/+++ beginnen und die zu patchenden Dateien darstellen. Der Anfang von --- repräsentiert die alte Datei und der Anfang von +++ repräsentiert die neue Datei.

Mehrere Patches in einer Patchdatei

Eine Patchdatei kann viele Abschnitte enthalten, die mit ---/+++ beginnen, und jeder Abschnitt wird zum Anwenden eines Patches verwendet. Eine Patchdatei kann also viele Patches enthalten.

Blöcke

Blöcke sind die Stellen, die im Patch geändert werden müssen. Normalerweise beginnt und endet es mit etwas, das nicht geändert werden muss. Sie dienen lediglich dazu, den zu ändernden Standort anzugeben. Sie beginnen normalerweise mit @@ und enden mit dem Anfang eines anderen Blocks oder eines neuen Patch-Headers.

linux 打patch_linux 打patch_linux 打patch

Einrückung blockieren

Der

-Block wird um eine Spalte eingerückt und diese Spalte wird verwendet, um anzugeben, ob die Zeile verkleinert oder gelöscht werden soll.

Erste Blockspalte

Das Zeichen

+ zeigt an, dass diese Zeile hinzugefügt werden muss.

Das

-Zeichen zeigt an, dass diese Zeile gelöscht werden soll.

Kein Minuszeichen oder Negativzeichen bedeutet, dass es sich lediglich um eine Referenz handelt und nicht geändert werden muss.

Verwendung:

patch-p0

patch-p1

Das obige ist der detaillierte Inhalt vonVertiefendes Verständnis von Patch-Dateien: Generierung von Diff-Anweisungen und Analyse gemeinsamer Parameter. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn