El artículo de knifepoint.net describe una solución ingeniosa para editar cambios individuales dentro de un sistema de control de versiones distribuido (VCS) llamado Jujutsu. Jujutsu, a diferencia de Git, no ofrece de forma nativa funcionalidades equivalentes a git format-patch y git am para manipular cambios en formato de parche. El problema que plantea el autor es la necesidad de renombrar un método en código Python dentro de un cambio específico, una tarea que resulta problemática con las herramientas de lenguaje (LSP) y que requeriría una edición manual engorrosa o una solución menos limpia en Git.
La solución propuesta se basa en extender la funcionalidad de jj diffedit, una herramienta de Jujutsu que permite editar el contenido de un cambio. Originalmente, jj diffedit solo permite elegir qué líneas conservar o descartar, sin permitir modificaciones directas. Para superar esta limitación, el autor creó un script que actúa como una herramienta externa para jj diffedit. Este script recibe dos directorios: uno representando el estado del repositorio antes del cambio (left) y otro representando el estado con el cambio aplicado (right). El script toma el directorio right como base, revierte los cambios originales del parche y luego aplica las modificaciones realizadas por el usuario en el editor.
El script funciona generando un archivo de parche a partir de la diferencia entre los directorios left y right modificados, abriendo este parche en el editor de texto configurado, y luego aplicando el parche editado al cambio en Jujutsu. Este proceso permite realizar modificaciones complejas, como renombrar métodos o corregir errores, de manera precisa y controlada. La clave está en configurar Jujutsu para que utilice este script como herramienta externa, a través del archivo de configuración (jj config edit --user).
Esta técnica, denominada “Jujutsu Patch Edit”, es particularmente útil para desarrolladores que trabajan con Jujutsu y necesitan realizar modificaciones específicas en cambios individuales, evitando así afectar a otras partes del proyecto. Aunque el script presentado puede ser optimizado, demuestra la flexibilidad de Jujutsu para extender su funcionalidad a través de herramientas externas y ofrece una alternativa viable a las soluciones más complejas disponibles en Git. Una limitación es la necesidad de configurar y mantener el script externo, pero el beneficio de una edición más precisa y controlada suele compensar este esfuerzo.
