- Um pequeno erro ao digitar repetidamente o comando
jj leva a um erro de subcomando, mas isso pode ser absorvido com um alias de configuração do jj
- O exemplo mostra a falha de
jj jj show -T 'change_id.short()', que tenta obter o ID curto do changeset atualmente em edição
- O
jj permite definir alias no arquivo de configuração, como no git, e com jj util exec é possível repassar o restante do comando de volta para o jj
- Um alias simples faz com que
-T seja interpretado não como alvo de execução, mas como opção de jj util exec, então é preciso interromper o parsing de argumentos com --
- Com a configuração final
jj = ["util", "exec", "--", "jj"], não só jj jj show, mas também jj jj jj... show repetido várias vezes passa a imprimir o mesmo ID de changeset
jj digitado repetidamente falha com erro de subcomando
- Ao usar
jj, se você digitar mais um jj na linha de comando, o segundo jj será interpretado como um subcomando e falhará
- O exemplo é um comando que tenta obter o ID curto do changeset atualmente em edição
$ jj jj show -T 'change_id.short()'
error: unrecognized subcommand 'jj'
Usage: jj [OPTIONS] <COMMAND>
For more information, try '--help'.
- Também dá para contornar isso com um alias do shell, mas é possível usar o alias da própria configuração do
jj
- Para editar a configuração, pode-se usar
jj config edit
- Para alterar a configuração pelo shell, pode-se usar
jj config set
Em jj util exec, fixe o repasse de argumentos com --
- A primeira tentativa consiste em executar o
jj novamente a partir do alias com jj util exec
[aliases]
# jj all the way down
jj = ["util", "exec", "jj"]
- Nessa configuração,
-T é interpretado não pelo jj que será executado, mas como uma opção de jj util exec, e por isso falha
$ 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'.
- Ao inserir
--, o parsing de opções é interrompido dali em diante, e os argumentos restantes podem ser passados como estão para o alvo de execução
[aliases]
# jj all the way down
jj = ["util", "exec", "--", "jj"]
- Depois da configuração final, tanto
jj show normal quanto jj jj show aninhado e versões ainda mais repetidas de jj jj jj ... show exibem o mesmo ID curto 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 comentários
Opiniões no Lobste.rs
Antes também já tinha havido git git git git git
Isso também dá para fazer de um jeito mais simples:
A única desvantagem desse formato é que, se minha memória não falha, ao rodar sem outros argumentos, como em
jj jj, ele não executa o comando padrão comojjfariaUau, quase 1 ano atrás (28/09/25) eu tinha postado a mesma solução no Discord do JJ
Para fazer um erro de digitação
jj jj ...se comportar comojj ..., na verdade é preciso isto:Na verdade, gosto bastante dessa abordagem
Isso é uma referência a bunny party?
Também adicionei ao gist de configuração do jj que eu mantenho: https://gist.github.com/pksunkara/622bc04242d402c4e43c7328234fd01c
Mesmo assim, queria ver uma versão explicando o que é o Jujutsu e por que eu deveria usá-lo, em tamanho de tweet e como se fosse para uma criança de 5 anos
No meu emprego anterior, usei Git diariamente por 4 anos e odiava de verdade. Era grotescamente complexo demais para o que precisávamos e para a maioria dos usos, e, para a maioria das pessoas, não era um sistema de controle de versão distribuído, mas sim uma ferramenta centralizada baseada em servidor e centrada no Github
Acho engraçado que muitos usuários de Git não saibam que
gittambém significa, no inglês britânico, “uma pessoa irritadiça, pouco cooperativa e inútil”. É uma palavra que descreve bem o Git como ferramentaDito isso, nunca usei outros sistemas de controle de versão, então sou fraco em comparações. Jujutsu também é difícil de pesquisar no Google, e a documentação parece voltada a usuários de controle de versão mais experientes do que eu
gitjustamente pelo sentido de pessoa grosseira e irritadiça