Come dividere e modificare le patch?


10

A volte ho bisogno di dividere una grande patch in più piccole (disgiunte), ad esempio per ogni funzione separata inclusa.

Di solito lo faccio tramite i comandi vim yank / dd standard e il cambio della finestra divisa.

Ma ci sono alcuni strumenti / trucchi per aiutare con questo tipo di modifica?

Ad esempio supporto per comandi come: sposta i 3 hunk completi successivi nel file patch aperto a destra



1
A proposito, come mai le persone rispondono alla domanda ma non la trovano utile / chiara abbastanza per votarla?!? ;)
maxschlepzig

Risposte:


7

Potresti dare un'occhiata a patchutils [1]. Per la parte vim, ho scritto un piccolo plugin vim che aiuta a navigare nelle patch: diff_navigator [2].

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

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


1
diff_navigatorApparentemente l' URL è vim.org/scripts/script.php?script_id=2361 Emacs ha caratteristiche simili nelle modalità Ediff e SMerge
Riccardo Murri,

2
Potresti estendere la tua risposta per renderla più completa? Aggiungere un esempio su come usare quale utility dai patchutils impostati per dividere una grande patch in quelle disgiunte sarebbe fantastico ...
Maxschlepzig

5

Un po 'fuori tema, immagino, ma penso ancora che sia utile.

Se usi git per fare il tuo sviluppo, puoi facilmente dividere tutte le tue modifiche in "hunk" più piccoli che racchiudono una caratteristica ciascuno. Finisci con un commit per funzione e puoi usare git's git-format-patchper creare (e persino firmare e attribuire correttamente le patch), ho delineato come farlo qui


3

My Suse ha splitdiffutil che funziona in questo modo:

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

0

È possibile utilizzare questo per dividere la grande patch per blocchi più piccoli (sia per file oppure ogni pezzo) e poi, se avete bisogno di unire quindi utilizzare combinediff dal patchutils pacchetto che è stato menzionato nella risposta di Petr Uzel

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.