2009-11-30 22 views
9

Usiamo la sovversione e durante ogni check-in, uno script crea un file patch con tutte le diff. Ora per lo stesso problema/difetto ci potrebbero essere più check-in e ci ritroveremo con più file patch. Ora per vedere le modifiche consolidate per un problema, è necessario unire tutti i file di patch. C'è un modo per farlo?Come unire più file di patch?

Oppure un altro modo per risolvere lo stesso problema è: esiste un modo in sovversione per ottenere la differenza combinata di tutte le modifiche eseguite come parte di un particolare commento? Ad esempio:

check-in con un commento: "123: primi cambiamenti"
check-in con un commento: "123: secondo insieme di modifiche"
check-in con un commento: "123: modifiche terzi" ..

C'è un modo per ottenere una differenza combinata di tutti i cambiamenti avvenuti il ​​cui commento ha il prefisso 123?

risposta

11

combinediff da patchutils può combinare il diff per voi.

(spudoratamente preso in prestito da this previous SO question.)

+0

Combinediff funziona solo se le linee di contesto del secondo diff rimangono valide * dopo * viene applicato il primo diff. Pertanto, se entrambe le differenze sono contro la stessa linea di base e toccano le linee adiacenti, allora alcune modifiche verranno rifiutate. – user833771

+0

Come usare combinediff, possiamo usarlo su Windows? – ashish

+0

Scarica l'ultima versione da http://cyberelk.net/tim/data/patchutils/stable/, estrai, './configure && make && make install', quindi puoi eseguire' combinationiff patch1 patch2'. – erwaman

3

Fai un nuovo ramo a partire dalla revisione appena prima del primo di modifiche. Nel nuovo ramo, unisci ogni changeset del problema, in ordine. Prendere un diff tra l'inizio del nuovo ramo e il risultato finale.

(Se si esegue il branching basato sul problema, si otterrà automaticamente la situazione di cui sopra).

Mercurial ha una bella estensione per la gestione delle raccolte di patch, ovvero l'estensione mq. Questo, a sua volta, si basa sulla trapunta (http://savannah.nongnu.org/projects/quilt), un sistema progettato per impilare le patch l'una sull'altra.

Problemi correlati