Ich möchte einen Patch aus einem bestimmten gcc
Zweig erstellen und ihn mit den offiziellen Versionen vergleichen. Wenn ich also das Tarball aus der stabilen Version entpacke, kann ich den Patch anwenden und das Äquivalent dessen erhalten, was in diesem bestimmten Zweig enthalten war.
Es ist das erste Mal, dass ich einen Patch erstellen muss, also ist es das allererste Mal, dass ich das mache, und mein Hauptanliegen ist es, die Optionen und die Analyse richtig hinzubekommen, da es sich um ein extrem wichtiges Stück Software handelt
diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch
Ist das ausreichend und die beste Vorgehensweise?
Antwort1
Ja, das ist eine gute Möglichkeit, einen Patch zu erstellen.
Zusamenfassend:
Um einen Patch für eine einzelne Datei zu erstellen, könnte Ihr Befehl folgendermaßen aussehen
diff -Naru file_original file_updated > file.patch
Wo
-N
: fehlende Dateien als leer behandeln-a
: alle Dateien als Text behandeln-r
: rekursives Vergleichen aller gefundenen Unterverzeichnisse-u
: gibt NUM (Standard 3) Zeilen einheitlichen Kontexts aus
So erstellen Sie einen Patch für das gesamte Verzeichnis:
diff -crB dir_original dir_updated > dfile.patch
Wo
-c
: gibt NUM (Standard 3) Zeilen des kopierten Kontexts aus-r
: rekursives Vergleichen aller Unterverzeichnisse-B
: Änderungen ignorieren, deren Zeilen alle leer sind
Um diesen Patch anzuwenden, können Sie Folgendes ausführen:
patch -p1 --dry-run < dfile.patch
Dabei p
weist der Schalter den Patch an, das Pfadpräfix zu entfernen, damit die Dateien richtig identifiziert werden. In den meisten Fällen sollte dies der Fall sein 1
.
Entfernen Sie es --dry-run
, wenn Sie mit dem auf dem Bildschirm angezeigten Ergebnis zufrieden sind.
Antwort2
Wenn Sie den letzten Git-Check-in mit einer stabilen Version vergleichen möchten, gehen Sie einfach git diff the-stable-version
in das Repository (Sie müssen herausfinden, welches Tag es beschreibt, wahrscheinlich die genaue Versionsnummer oder eine Variante). git
speichert den vollständigen Verlauf des Projekts (normalerweise gibt es Möglichkeiten, nur einen Teil abzurufen). Es spielt keine Rolle, ob the-stable-version
es sich um einen anderen Entwicklungszweig handelt (d. h. die Entwicklung wurde abgezweigt und der stabile Zweig erhielt einige Korrekturen in letzter Minute).