BookinglyTech News
Software

jj absorbe en su núcleo lo que antes exigía scripts: bisect run, tag y converge

Andre Arko repasa en JJ Con 2026 qué comandos han pasado de ser alias y envoltorios externos a funciones nativas de Jujutsu, y qué sigue viviendo fuera del binario.

2 min de lecturaLobsters0 vistas

Jujutsu (jj) ha ido absorbiendo en su binario funciones que hace un año obligaban a montar alias, envoltorios sobre git o scripts en Python. Andre Arko lo repasó en JJ Con 2026, en una charla que continúa la que dio en la edición anterior sobre configuración y que ahora mira al ecosistema completo: qué se resuelve solo con jj, qué se resuelve configurándolo y qué queda para herramientas de fuera.

Lo que ya no hay que envolver

El primer bloque es el de funcionalidad que se ha movido del config al núcleo. jj bookmark advance, con el atajo jj b a, hace lo que hacía el alias jj tug: busca el bookmark más cercano y lo mueve al cambio pushable más próximo. Si alguien prefiere avanzar hasta la copia de trabajo, se ajusta con revsets.bookmark-advance-to.

jj bisect run cubre lo que antes exigía un script y que Arko describe como el hueco funcional más grande que quedaba frente a git. jj run ejecuta un script sobre cada cambio de un revset y actualiza cada uno si toca archivos, manteniendo el árbol sin modificar. jj fix se parece, pero no es lo mismo: solo toca los archivos que ya cambiaron, pasa un único fichero cada vez al script y no hace checkout de cada cambio. Para aplicar un formateador o un linter retroactivamente sobre todo un revset es bastante más rápido que jj run.

A esto se suma jj tag, que llega desde git y no desde un script: ahora existen jj tag set y jj git push --all, o --tag NOMBRE para una sola etiqueta. Con eso, Arko afirma que su trabajo diario ya no incluye ejecutar el comando git en ningún momento.

jj arrange funciona como un rebase interactivo sin editar archivos de texto: los cambios se colocan y se mueven directamente en un grafo tipo log. jj converge es el más reciente y, según el ponente, puede que el más útil. Cuando un cambio se actualiza en dos sitios distintos, diverge; converge intenta combinar los dos flujos en uno solo. Puede generar conflictos de merge, pero Arko lo prefiere a tener que reconciliar a mano dos ramas separadas.

Fuera del CLI

La última parte de la charla se va a lo que vive por completo fuera de jj. Ahí entran clientes e interfaces de terceros construidos sobre el sistema, y el material recopilado reúne repos como lazyjj o gg junto a otros que tampoco aparecían juntos en la documentación, el wiki ni la lista de proyectos del ecosistema.

El interés para quien administra repositorios está en el desplazamiento: buena parte de lo que la comunidad resolvía con alias frágiles y scripts propios ya está dentro de jj, y eso reduce la superficie que hay que mantener cuando cambia una versión. Queda por ver si el resto del ecosistema externo se consolida o se queda como una colección de clientes alternativos, algo que la charla deja abierto.