2009-11-30 9 views
9

Usamos subversión y durante cada check-in, un script crea un archivo de parche con todas las diferencias. Ahora, para el mismo problema/defecto, podría haber múltiples registros y terminamos con múltiples archivos de parches. Ahora para ver los cambios consolidados de un problema, todos los archivos de parches deben fusionarse. ¿Hay una manera de hacer eso?Cómo combinar múltiples archivos de parche?

O bien, otra forma de resolver el mismo problema es: ¿hay alguna forma de subversión para obtener la diferencia combinada de todos los cambios realizados como parte de un comentario en particular? Por ejemplo:

registramos con comentario: "123: primeros cambios"
registramos con comentario: "123: segundo conjunto de cambios"
registramos con comentario: "123:" .. terceros cambios

¿Hay alguna forma de obtener un diferencial combinado de todos los cambios que ocurrieron cuyo comentario tiene el prefijo 123?

Respuesta

11

combinediff de patchutils puede combinar los diffs para usted.

(Desvergonzadamente tomados de this previous SO question.)

+0

Combinediff solo funciona si las líneas de contexto del segundo diff siguen siendo válidas * después * se aplica el primer diff. Por lo tanto, si ambas diferencias están en contra de la misma línea base y tocan líneas adyacentes, algunos cambios serán rechazados. – user833771

+0

Cómo usar combinationiff, ¿Podemos usarlo en Windows? – ashish

+0

Descargue la última versión de http://cyberelk.net/tim/data/patchutils/stable/, extracto, './configure && make && make install', luego puede ejecutar' combinediff patch1 patch2'. – erwaman

3

hacer una nueva rama a partir de la revisión justo antes del primer conjunto de cambios. En la nueva rama, combine cada conjunto de cambios del problema, en orden. Tome una diferencia entre el comienzo de la nueva bifurcación y el resultado final.

(Si realiza derivaciones basadas en problemas, obtendrá automáticamente la situación anterior).

Mercurial tiene una buena extensión para manejar colecciones de parches, a saber, el mq exension. Eso, a su vez, se basa en la colcha (http://savannah.nongnu.org/projects/quilt), un sistema diseñado para apilar parches entre sí.

Cuestiones relacionadas