Ist dies eine gute Möglichkeit, einen Patch zu erstellen?

Ist dies eine gute Möglichkeit, einen Patch zu erstellen?

Ich möchte einen Patch aus einem bestimmten gccZweig 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:

  1. 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
  2. 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 pweist 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-versionin das Repository (Sie müssen herausfinden, welches Tag es beschreibt, wahrscheinlich die genaue Versionsnummer oder eine Variante). gitspeichert den vollständigen Verlauf des Projekts (normalerweise gibt es Möglichkeiten, nur einen Teil abzurufen). Es spielt keine Rolle, ob the-stable-versiones sich um einen anderen Entwicklungszweig handelt (d. h. die Entwicklung wurde abgezweigt und der stabile Zweig erhielt einige Korrekturen in letzter Minute).

verwandte Informationen