1 Respuestas
-
VonC
4 de mayo de 2019Esa pregunta se mostró este parche propuesta a principios de 2018.
Felipe de Madera tratado de poner de relieve el concepto de "modificación de las líneas".
(Una versión simplificada de su parche hecho aquí)Cuando un conjunto de líneas que se modifica el trozo contiene eliminaciones seguidas por las inserciones.
Correctamente etapa de un subconjunto de la modificación de las líneas que necesitamos para que coincida con el seleccionado eliminaciones con el seleccionado inserciones si no queremos terminar con deleciones y el contexto de las líneas seguidas por las inserciones que no es lo que queremos.Que terminó a ser complicado:
Para implementar el ensayo modificado líneas el código de necesidades a la par de cada uno de los eliminados de la línea con su reemplazo.
Esto se hace mediante la agrupación de los consecutivos de las líneas seleccionadas, de modo que se tiene una lista de grupos de líneas eliminadas y otra lista de insertar líneas, entonces los pares de las supresiones y las inserciones por su índice en la lista.Felipe comenzó a tener dudas:
Estoy empezando a ver por qué todos los otros programas que he probado en la redacción de este (
tig
,gitg
,gitk
ymercurial
's versión deadd -i
) no se hará ningún intento de etapa modificado líneas correctamente, aunque creo que Git debe tener alguna manera de hacerloHubiéramos preferido el principal mantenedor de Git Junio C. Hamano confirmado esas dudas, con esta respuesta:
Sí, este es un tipo de característica que se puede proponer y ejecutar algo que funciona bien en algunos de los casos limitados uno de los usos, pero no en otros casos.
Y se hace muy difícil explicar cómo evitar la limitación de implementación---es por eso que me detuve en "dividir este trozo?" y no ir más allá cuando diseñé el original "incremental de añadir" característica.Creo que la verdadera razón por la que es difícil es que no hay una buena definición de "modificado" en "la etapa de modificación de las líneas".
Y peor aún, no hay una buena manera mecánica de la figura, pues un parche sólo le da "estos fueron eliminados" y "estos son añadidos", sin darle "esta línea en el borrado del bloque que corresponde a estas dos líneas en el bloque agregado" (es decir, "esta original línea fue modificado en esta cosa en el resultado").