jj 0.45.0 lanza converge y mejora la gestión de configuraciones y Git HEAD
La última versión de jj incorpora el comando converge para fusionar divergencias, cambios en la gestión de archivos de configuración y soporte para múltiples Git worktrees.
jj 0.45.0
La nueva versión de jj, el sistema de control de versiones compatible con Git que busca ser simple y potente, llega con un conjunto de mejoras que afectan tanto a la experiencia de usuario como a la interoperabilidad con Git.
Converge: resolver divergencias automáticamente
El comando jj converge se añade para intentar resolver divergencias de manera automática. Si varios commits divergen, el comando crea un nuevo commit que sustituye a los divergentes. Utiliza heurísticas para encontrar la solución más adecuada y, cuando no logra decidir, solicita al usuario. En modo no interactivo, el proceso aborta si necesita intervención.
Cambios en jj config
Los subcomandos edit, set y unset ya apuntan por defecto al primer archivo de configuración de usuario (por ejemplo ~/.config/jj/config.toml o el primer archivo en conf.d/). Se elimina el prompt interactivo cuando hay varios archivos. Para apuntar a un archivo concreto se añade la opción --file <PATH>, lo que permite un control preciso y evita mensajes de confirmación.
Soporte para Git worktrees en repositorios colocados
jj ahora rastrea el estado de Git HEAD por worktree internamente, lo que permite que cada espacio de trabajo jj tenga su propio HEAD cuando se usan varios worktrees de Git. Los repositorios existentes se migran automáticamente.
Mejoras en bisect y log
jj bisectahora indica cuando no puede encontrar de forma inequívoca la primera revisión defectuosa debido a saltos en la evaluación.- El pager por defecto incluye la bandera
-K(--quit-on-intr), lo que hace queCtrl+Cenlesscierre correctamente la terminal.
Correcciones de bugs
- Se añadió
untracked_remote_tags()al conjuntoimmutable_heads()por defecto. jj arrangedesplaza la vista para mantener el commit seleccionado visible cuando la pila supera el tamaño del terminal.- Se corrigió la pérdida de retorno de carro en lados de conflictos que terminan con
\r. - En espacios de trabajo colocados,
jj workspace update-staleahora resetea correctamente el Git HEAD. jj runya no ejecuta sobre revisiones restantes cuando un proceso termina con código distinto a cero.- Se arregló un crash en
jj logal tratar revisiones ocultas. - En repositorios colocados, un
git addexterno ya no genera árboles con entradas duplicadas.
Contribuidores
El lanzamiento se logró gracias a la participación de varios desarrolladores, incluyendo a Aaron Bies, Alexander Chen, Baptiste Girardeau, Caleb White, David Rieber, y otros.
¿Qué implica esto para los administradores y arquitectos?
El nuevo comando converge puede simplificar la reconciliación de ramas divergentes, reduciendo la intervención manual en flujos de trabajo complejos. El cambio en la gestión de archivos de configuración facilita la adopción de políticas de configuración centralizadas sin interrumpir al usuario final. La compatibilidad con múltiples Git worktrees abre la puerta a arquitecturas de repositorio más flexibles, especialmente en entornos donde se manejan grandes volúmenes de código con distintas ramas activas.
Los usuarios que ya emplean jj en producción deberían probar la nueva versión en un entorno de staging para evaluar el impacto de los cambios en la migración automática de HEAD y en el manejo de configuraciones. La comunidad de jj sigue activa y se espera que futuras versiones continúen afinando la integración con Git y mejorando la experiencia de usuario.
