1 points par GN⁺ 5 시간 전 | 1 commentaires | Partager sur WhatsApp
  • Une petite erreur consistant à saisir jj de manière répétée provoque une erreur de sous-commande, mais elle peut être absorbée avec un alias de configuration jj
  • L’exemple montre l’échec de jj jj show -T 'change_id.short()', qui essaie d’obtenir l’ID court du changeset en cours d’édition
  • jj, comme git, permet de définir des alias dans le fichier de configuration, et jj util exec peut retransmettre les commandes restantes à jj
  • Un alias simple interprète -T non pas comme une option de la commande exécutée, mais comme une option de jj util exec lui-même ; il faut donc arrêter l’analyse des arguments avec --
  • Avec la configuration finale jj = ["util", "exec", "--", "jj"], non seulement jj jj show, mais aussi les formes imbriquées jj jj jj... show, affichent le même ID de changeset

La répétition de jj provoque un échec avec une erreur de sous-commande

  • Lors de l’utilisation de jj, si l’on saisit un jj supplémentaire sur la ligne de commande, le second jj est interprété comme une sous-commande et échoue
    • L’exemple montre une commande qui essaie d’obtenir l’ID court du changeset actuellement en cours d’édition
$ jj jj show -T 'change_id.short()'
error: unrecognized subcommand 'jj'
Usage: jj [OPTIONS] <COMMAND>
For more information, try '--help'.
  • On peut contourner cela avec un alias shell, mais il est aussi possible d’utiliser un alias dans la configuration de jj
    • On peut utiliser jj config edit pour modifier la configuration
    • On peut utiliser jj config set pour changer la configuration depuis le shell

Avec jj util exec, -- fixe le passage des arguments

  • La première tentative consiste à relancer jj depuis l’alias via jj util exec
[aliases]


# jj all the way down
jj = ["util", "exec", "jj"]
  • Avec cette configuration, -T est interprété non pas comme une option du jj exécuté, mais comme une option de jj util exec, ce qui fait échouer la commande
$ 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'.
  • En ajoutant --, on arrête l’analyse des options à cet endroit et on peut transmettre les arguments restants tels quels à la commande exécutée
[aliases]


# jj all the way down
jj = ["util", "exec", "--", "jj"]
  • Après la configuration finale, jj show, jj jj show et même jj jj jj ... show affichent tous le même ID court 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 commentaires

 
GN⁺ 5 시간 전
Avis sur Lobste.rs
  • Il y avait déjà eu git git git git git auparavant

  • On peut aussi faire ça d’une manière plus simple :

    [aliases]  
    jj = []  
    

    Le seul inconvénient de cette forme, si je me souviens bien, c’est que si on l’exécute sans autre argument, comme jj jj, elle n’exécute pas la commande par défaut comme jj

    • Dans ce cas, cette méthode plus simple ne fait pas réellement la même chose, non ?
  • Waouh, j’avais posté la même solution sur le Discord de JJ il y a presque un an (28/09/25)
    Pour qu’une faute de frappe jj jj ... se comporte comme jj ..., il faut en réalité ceci :

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

    En fait, j’aime bien cette approche

  • C’est une référence à bunny party ?

  • Je l’ai aussi ajouté à mon gist de configuration jj : https://gist.github.com/pksunkara/622bc04242d402c4e43c7328234fd01c

  • J’aimerais quand même voir une version qui explique ce qu’est Jujutsu et pourquoi il faudrait l’utiliser en longueur de tweet, comme si on l’expliquait à un enfant de 5 ans
    Dans mon précédent job, j’ai utilisé Git tous les jours pendant 4 ans, et je l’ai vraiment détesté. C’était absurdement trop complexe par rapport à ce dont on avait besoin et à la manière dont la plupart des gens l’utilisaient, et pour la majorité ce n’était pas un système de contrôle de version distribué, mais plutôt un outil centralisé autour de GitHub
    C’est amusant que beaucoup d’utilisateurs de Git ne sachent pas que git signifie aussi en anglais britannique « quelqu’un de grincheux, peu coopératif et pas serviable ». C’est une assez bonne description de Git en tant qu’outil
    Cela dit, je n’ai jamais utilisé d’autre système de contrôle de version, donc je ne suis pas très solide sur les comparaisons. Jujutsu est aussi difficile à chercher sur Google, et sa documentation semble davantage pensée pour des utilisateurs plus expérimentés du contrôle de version que pour quelqu’un comme moi

    • Je crois que Torvalds a effectivement choisi git parce que ça voulait dire personne impolie et grincheuse