vim tree undo 3-way-merge

Saltar deshacer paso en Vim



tree undo (2)

¿Hay alguna manera de mantener los cambios B y D, pero omitir C?

Estás en el estado D.: w file.ext_D

Retroceder al estado C.: w file_ext_C

Retroceder al estado B.: w file.ext_B

:!kdiff3 file.ext_B file.ext_C file.ext_D

Esto proporciona una combinación de 3 maneras de las diferencias, pero aún así tendría que ir manualmente y elegir cada línea roja en D para cada conflicto de combinación. No es exactamente una solución fácil.

Si en cambio lo haces

:!kdiff3 file.ext_C file.ext_B file.ext_D

Luego, la combinación se realiza automáticamente (a excepción de las líneas individuales con múltiples cambios)

Para escenarios más complicados se vuelve más difícil.

Nota: No estoy seguro de cómo una herramienta de control de revisiones sea de mucha ayuda. Básicamente estás haciendo algo como crear un parche entre B y D, y luego restarle el parche de C a D. Me parece que los sistemas de control de revisión generalmente están diseñados para administrar las fusiones entre diferentes fuentes de cambios, no los cambios en una sola rama.

kdiff3 está disponible en: http://kdiff3.sourceforge.net/

Digamos que estoy en el estado A en mi documento. Luego hago los cambios B, C y D (en orden).

¿Hay alguna manera de mantener los cambios B y D, pero omitir C?

O, digamos que estoy en el estado A en mi documento. Hago el cambio B, lo deshago y luego hago los cambios C y D (así que Vim tiene un árbol de deshacer con dos ramas). Luego cambio de opinión y decido que quiero usar B y D pero no C.

¿Cómo puedo hacer esto en Vim? Tengo el complemento gundo.vim instalado, pero no lo he usado tanto.


Bueno, probaré esto y diré: No, no creo que haya una manera de hacer exactamente lo que quieres con vim.

gundo.vim agrega una interfaz agradable para deshacer vim, pero no cambia sus capacidades centrales. Así que eché un vistazo a los documentos oficiales de vim para ver si hay algún indicio de si es capaz de hacer esto:

Nada de fusionar dos ramas juntas. Creo que ewh y ZyX tienen razón: para obtener una solución general para fusionar B con D, vim necesitaría para

  1. Bram para agregarlo como una característica separada en una versión futura
  2. alguien que lo implemente en un plugin al integrarse con algo que ya puede hacer combinaciones (como git / hg)

Por supuesto, puede intentar hacerlo manualmente teniendo archivos con las versiones B, C y D, así como algunas diferencias abiertas.

Nota: si entendí mal y no se estaba preguntando acerca de una solución general y está buscando ayuda con una instancia específica de esto, avíseme y veré qué puedo hacer :)