- El pequeño error de escribir repetidamente el comando
jj termina en un error de subcomando, pero se puede absorber con un alias en la configuración de jj
- El ejemplo es una situación en la que falla
jj jj show -T 'change_id.short()', que intenta obtener el ID corto del changeset que se está editando actualmente
- Al igual que git,
jj permite definir un alias en el archivo de configuración, y con jj util exec se puede pasar el resto del comando de vuelta a jj
- Un alias simple interpreta
-T como una opción de jj util exec, no del programa a ejecutar, por lo que hay que cortar el parseo de argumentos con --
- Con la configuración final
jj = ["util", "exec", "--", "jj"], no solo jj jj show, sino también jj jj jj... show anidados varias veces imprimen el mismo ID de changeset
Un jj escrito repetidamente falla con un error de subcomando
- Si al usar
jj se escribe un jj adicional en la línea de comandos, el segundo jj se interpreta como un subcomando y falla
- El ejemplo es un comando que intenta obtener el ID corto del changeset que se está editando actualmente
$ jj jj show -T 'change_id.short()'
error: unrecognized subcommand 'jj'
Usage: jj [OPTIONS] <COMMAND>
For more information, try '--help'.
- También se puede evitar con un alias del shell, pero se puede usar el alias de la propia configuración de
jj
- Para editar la configuración se puede usar
jj config edit
- Para cambiar la configuración desde el shell se puede usar
jj config set
En jj util exec, -- fija el paso de argumentos
- El primer intento consiste en volver a ejecutar
jj desde el alias mediante jj util exec
[aliases]
# jj all the way down
jj = ["util", "exec", "jj"]
- Con esta configuración,
-T se interpreta como una opción de jj util exec, no del jj que se va a ejecutar, y falla
$ jj jj show -T 'change_id.short()'
error: unexpected argument '-T' found
tip: to pass '-T' as a value, use '-- -T'
Usage: jj util exec [OPTIONS] <COMMAND> [ARGS]...
For more information, try '--help'.
- Al agregar
--, se detiene el parseo de opciones a partir de ahí y los argumentos restantes se pasan tal cual al programa a ejecutar
[aliases]
# jj all the way down
jj = ["util", "exec", "--", "jj"]
- Después de la configuración final, tanto
jj show normal como jj jj show anidado, e incluso jj jj jj ... show repetido más veces, imprimen el mismo ID corto de changeset
$ jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj jj jj jj show -T 'change_id.short()'
upvqxuzzvxtx
$ jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj jj show -T 'change_id.short()'
upvqxuzzvxtx
1 comentarios
Opiniones de Lobste.rs
Antes también hubo git git git git git
Esto también se puede hacer con un método más simple:
La única desventaja de esta forma es que, si mal no recuerdo, al ejecutarlo como
jj jjsin otros argumentos no corre el comando predeterminado comojjVaya, hace casi 1 año (09/28/25) publiqué la misma solución en el Discord de JJ
Para que el error tipográfico
jj jj ...se comporte comojj ..., en realidad se necesita esto:La verdad, este enfoque me gusta bastante
¿Es esto una referencia a bunny party?
También lo agregué a mi gist de configuración de jj: https://gist.github.com/pksunkara/622bc04242d402c4e43c7328234fd01c
Aun así, me gustaría ver una versión que resuma qué es Jujutsu y por qué debería usarlo como si se lo explicaras a un niño de 5 años en longitud de tuit
En mi trabajo anterior usé Git todos los días durante 4 años, y realmente lo odiaba. Era absurdamente más complejo de lo necesario para lo que necesitábamos y para cómo la mayoría lo usa, y para la mayoría no era un sistema de control de versiones distribuido sino una herramienta centralizada basada en servidor alrededor de GitHub
Es curioso que muchos usuarios de Git no sepan que
giten inglés británico también significa “una persona malhumorada, poco cooperativa y nada útil”. Describe bastante bien a Git como herramientaPero no he usado otros sistemas de control de versiones, así que no soy muy bueno para comparar. También es difícil buscar Jujutsu en Google, y la documentación parece más orientada a usuarios de control de versiones más experimentados que a alguien como yo
gitprecisamente porque significa una persona grosera y malhumorada