2009-11-30 18 views
9

Nous utilisons subversion et à chaque check-in, un script crée un fichier patch avec tous les diff. Maintenant, pour le même problème/défaut, il peut y avoir plusieurs check-ins et nous nous retrouvons avec plusieurs fichiers patch. Maintenant, pour voir les modifications consolidées d'un problème, tous les fichiers de correctifs doivent être fusionnés. Y-a-t-il un moyen de faire ça?Comment fusionner plusieurs fichiers de correctifs?

Ou une autre façon de résoudre le même problème est la suivante: existe-t-il un moyen dans subversion pour obtenir le diff combiné de toutes les modifications effectuées dans le cadre d'un commentaire particulier? Par exemple:

Vérifié avec commentaire: "123: premiers changements"
avec commentaire cochés: "123: deuxième série de changements"
avec commentaire Vérifié: "123: troisième changements" ..

Existe-t-il un moyen d'obtenir un diff combiné de tous les changements survenus dont le commentaire a le préfixe 123?

Répondre

11

combinediff de patchutils pouvez combiner les diff pour vous.

(Shamelessly empruntés à this previous SO question.)

+0

Combinediff ne fonctionne que si les lignes de contexte du second diff restent valables * après que le premier diff est appliqué. Ainsi, si les deux diff sont contre la même ligne de base et touchent des lignes adjacentes, alors certaines modifications seront rejetées. – user833771

+0

Comment utiliser combinediff, Pouvons-nous l'utiliser sur windows? – ashish

+0

Téléchargez la dernière version depuis http://cyberelk.net/tim/data/patchutils/stable/, extrayez, './configure && make && make install', puis vous pouvez exécuter' combinediff patch1 patch2'. – erwaman

3

Faire une nouvelle branche à partir de la révision juste avant la première changeset. Dans la nouvelle branche, fusionnez chaque ensemble de modifications du problème, dans l'ordre. Prenez un diff entre le début de la nouvelle branche et le résultat final. (Si vous effectuez une dérivation basée sur un problème, vous obtiendrez automatiquement la situation ci-dessus).

Mercurial a une belle extension pour la gestion des collections de patchs, à savoir l'extension mq. Cela, à son tour, est basé sur la courtepointe (http://savannah.nongnu.org/projects/quilt), un système conçu pour empiler des correctifs les uns sur les autres.