1 puntos por GN⁺ 5 시간 전 | 1 comentarios | Compartir por WhatsApp
  • 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

 
GN⁺ 5 시간 전
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:

    [aliases]  
    jj = []  
    

    La única desventaja de esta forma es que, si mal no recuerdo, al ejecutarlo como jj jj sin otros argumentos no corre el comando predeterminado como jj

    • Entonces, ¿ese método más simple en realidad no hace lo mismo, no?
  • Vaya, 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 como jj ..., en realidad se necesita esto:

    [aliases]  
    jj = ["util", "exec", "--", "jj"]  
    

    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 git en inglés británico también significa “una persona malhumorada, poco cooperativa y nada útil”. Describe bastante bien a Git como herramienta
    Pero 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

    • Entiendo que Torvalds eligió git precisamente porque significa una persona grosera y malhumorada