¿Hay alguna forma de que pueda mantener los cambios B y D, pero omita C?
Estás en estado D.: w file.ext_D
Backtrack para indicar C: w file_ext_C
Backtrack al Estado B.: w file.ext_B
:!kdiff3 file.ext_B file.ext_C file.ext_D
Esto ofrece una combinación de 3 maneras de las diferencias, pero aún así tendría que ingresar manualmente y elegir cada línea roja en D para cada conflicto de fusión. No es exactamente una solución fácil.
Si por el contrario lo hace
:!kdiff3 file.ext_C file.ext_B file.ext_D
Luego de la fusión ocurre de forma automática (a excepción de líneas individuales con múltiples cambios)
Para los escenarios más complicados se hace más dura.
Nota: No estoy seguro de cómo una herramienta de control de revisión es de mucha ayuda. Básicamente estás haciendo algo como crear un parche entre B y D, y luego restar el parche de C a D de él. Me parece que los sistemas de control de revisiones generalmente están diseñados para administrar fusiones entre diferentes fuentes de cambios, no cambios a lo largo de una sola rama.
kdiff3 está disponible en: http://kdiff3.sourceforge.net/
modo de pregunta interesante. Suelo jugar con g- y g + y un montón de yank/put. Sería muy curioso lo que la gente viene con – sehe
No estoy seguro de que esto sea posible en Vim. El cambio C puede basarse en B. Lo que básicamente quiere es una forma de almacenar estados específicos del documento con ediciones, y la capacidad de fusionar diferentes estados. Suena como los sistemas de revisiones de núcleo de origen que pueden hacer las operaciones de "fusión". Creo que tendrá que ponerse en práctica el uso de búferes nombrados y/o guardar versiones alternativas del archivo si necesita saltar rápidamente entre las revisiones. – ewh
Solo puedo imaginar una forma de hacerlo automáticamente: importar todo el árbol de deshacer en algunos VCS y luego usarlo para omitir los cambios (por ejemplo, 'git rebase -i' proporciona una manera de eliminar algún compromiso, incluso si tiene hijos) . Pero nunca he visto tales complementos, por lo que tendrá que escribirlos solo. – ZyX