Comment diviser et éditer des patchs?

10

Parfois, je dois diviser un gros patch en plus petits (disjoints), par exemple pour chaque fonctionnalité distincte incluse.

Habituellement, je le fais via les commandes standard vim yank / dd et la commutation de fenêtre partagée.

Mais existe-t-il des outils / astuces vim pour vous aider avec ce type d'édition?

Par exemple, le support de commandes comme: déplacer les 3 prochains morceaux complets vers le fichier de correctif ouvert à droite

maxschlepzig
la source
Vous voudrez peut-être également consulter unix.stackexchange.com/questions/618/how-to-merge-patches
Maciej Piechotka
1
BTW, comment se fait-il que les gens répondent à la question mais ne la trouvent pas suffisamment utile / claire pour la voter?!? ;)
maxschlepzig

Réponses:

7

Vous voudrez peut-être jeter un œil aux patchutils [1]. Pour la partie vim, j'ai écrit un petit plugin vim qui aide à naviguer dans les patchs: diff_navigator [2].

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

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

Petr Uzel
la source
1
L' diff_navigatorURL est apparemment vim.org/scripts/script.php?script_id=2361 Emacs a des fonctionnalités similaires dans les modes Ediff et SMerge
Riccardo Murri
2
Pourriez-vous étendre votre réponse pour la rendre plus complète? Ajouter un exemple comment utiliser quel utilitaire de l'ensemble de patchutils pour diviser un gros patch en disjoints serait génial ...
maxschlepzig
5

Un peu hors sujet, je suppose, mais je pense toujours que c'est utile.

Si vous utilisez git pour faire votre développement, vous pouvez facilement diviser l'ensemble de vos modifications en "morceaux" plus petits qui incarnent chacun une fonctionnalité. Vous vous retrouvez avec un commit par fonctionnalité et pouvez utiliser git git-format-patchpour créer (et même signer et attribuer correctement) des correctifs, j'ai expliqué comment le faire ici

tante
la source
3

My Suse a splitdiffutil qui fonctionne comme ceci:

$ splitdiff -a tmp.179639.patch
Wrote >tmp.179639.patch.part001
Wrote >tmp.179639.patch.part002
akond
la source
0

Vous pouvez utiliser ce pour diviser le gros patch pour les petits morceaux (soit par fichier ou chaque morceau), puis si vous avez besoin de fusionner ensuite utiliser combinediff du patchutils paquet qui a été mentionné dans la réponse de Petr Uzel

Dror Cohen
la source