Wie teile und bearbeite ich Patches?


10

Manchmal muss ich einen großen Patch in kleinere (disjunkte) Patches aufteilen, z. B. für jede einzelne enthaltene Funktion.

Normalerweise mache ich das über Standard-Vim-Yank / DD-Befehle und Split-Window-Switching.

Aber gibt es einige Tools / Vim-Tricks, die bei solchen Bearbeitungen helfen?

Zum Beispiel Unterstützung für Befehle wie: Verschieben Sie die 3 nächsten vollständigen Hunks in die rechts geöffnete Patch-Datei



1
Übrigens, warum beantworten die Leute die Frage, finden sie aber nicht nützlich / klar genug, um sie zu verbessern?!? ;)
maxschlepzig

Antworten:


7

Vielleicht möchten Sie einen Blick auf Patchutils werfen [1]. Für den vim-Teil habe ich ein kleines vim-Plugin geschrieben, das beim Navigieren in Patches hilft: diff_navigator [2].

[1] http://cyberelk.net/tim/software/patchutils/

[2] http://www.vim.org/scripts/script.php?script_id=2361


1
Die diff_navigatorURL lautet anscheinend vim.org/scripts/script.php?script_id=2361. Emacs hat ähnliche Funktionen im Ediff- und SMerge-Modus
Riccardo Murri

2
Könnten Sie Ihre Antwort erweitern, um sie umfassender zu gestalten? Ein Beispiel hinzuzufügen, wie man das Dienstprogramm aus den Patchutils verwendet, um einen großen Patch in disjunkte
aufzuteilen

5

Etwas abseits des Themas, denke ich, aber ich denke immer noch, dass es nützlich ist.

Wenn Sie git für Ihre Entwicklung verwenden, können Sie Ihre gesamten Änderungen leicht in kleinere "Hunks" aufteilen, die jeweils eine Funktion enthalten. Sie haben am Ende ein Commit pro Feature und können Git's verwenden git-format-patch, um Patches zu erstellen (und sogar zu signieren und richtig zuzuordnen). Ich habe hier beschrieben, wie das geht


3

Meine Suse hat splitdiffutil, der so funktioniert:

$ splitdiff -a tmp.179639.patch
Wrote >tmp.179639.patch.part001
Wrote >tmp.179639.patch.part002

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.