jj jj jj jj jj
(caiustheory.com)jj명령어를 반복 입력하는 작은 실수는 하위 명령 오류로 이어지지만,jj설정 별칭으로 흡수할 수 있음- 예시는 현재 편집 중인 changeset의 짧은 ID를 얻으려는
jj jj show -T 'change_id.short()'가 실패하는 상황임 jj는 git처럼 설정 파일에 alias를 정의할 수 있어,jj util exec로 남은 명령을 다시jj에 넘길 수 있음- 단순 별칭은
-T를 실행 대상이 아니라jj util exec의 옵션처럼 해석하므로,--로 인자 파싱을 끊어야 함 - 최종 설정
jj = ["util", "exec", "--", "jj"]를 쓰면jj jj show뿐 아니라 여러 번 중첩된jj jj jj... show도 같은 changeset ID를 출력함
반복 입력된 jj가 하위 명령 오류로 실패함
jj사용 중 명령줄에jj를 하나 더 입력하면, 두 번째jj가 하위 명령으로 해석되어 실패함- 예시는 현재 편집 중인 changeset의 짧은 ID를 가져오려는 명령임
$ jj jj show -T 'change_id.short()'
error: unrecognized subcommand 'jj'
Usage: jj [OPTIONS] <COMMAND>
For more information, try '--help'.
- 셸 별칭으로도 우회할 수 있지만,
jj자체 설정의 alias를 사용할 수 있음- 설정 편집에는
jj config edit를 사용할 수 있음 - 셸에서 설정을 바꾸려면
jj config set을 사용할 수 있음
- 설정 편집에는
jj util exec에서 --로 인자 전달을 고정함
- 첫 시도는 별칭에서
jj util exec로 다시jj를 실행하는 방식임
[aliases]
# jj all the way down
jj = ["util", "exec", "jj"]
- 이 설정에서는
-T가 실행 대상jj가 아니라jj util exec의 옵션처럼 해석되어 실패함
$ 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'.
--를 넣으면 이후 옵션 파싱을 중단하고 남은 인자를 그대로 실행 대상에 전달할 수 있음
[aliases]
# jj all the way down
jj = ["util", "exec", "--", "jj"]
- 최종 설정 후에는 일반
jj show, 중첩된jj jj show, 더 많이 반복된jj jj jj ... show가 모두 같은 짧은 changeset ID를 출력함
$ 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
댓글과 토론
Lobste.rs 의견들
-
이전에도 git git git git git가 있었음
-
이건 더 단순한 방법으로도 가능함:
[aliases] jj = []이 형태의 유일한 단점은, 기억이 맞다면
jj jj처럼 다른 인자 없이 실행했을 때jj처럼 기본 명령을 실행하지 않는다는 것임- 그렇다면 그 더 단순한 방법은 실제로 같은 일을 하는 게 아닌 것 아닌가?
-
와, 거의 1년 전(09/28/25)에 JJ Discord에 같은 해결책을 올렸었음
jj jj ...오타가jj ...처럼 동작하게 하려면 실제로는 이게 필요함:[aliases] jj = ["util", "exec", "--", "jj"]사실 이 방식이 꽤 마음에 듦
-
이거 bunny party 참조인가?
-
내가 관리하는 jj 설정 gist에도 추가했음: https://gist.github.com/pksunkara/622bc04242d402c4e43c7328234fd01c
-
그래도 Jujutsu가 무엇이고 왜 써야 하는지 트윗 길이로 5살에게 설명하듯 정리한 버전을 보고 싶음
이전 직장에서는 Git을 4년간 매일 썼고, 정말 싫었음. 우리가 필요로 한 것과 대부분의 사용 방식에 비해 기괴할 정도로 과하게 복잡했고, 대부분에게는 분산 버전 관리 시스템이 아니라 Github 중심의 중앙화된 서버 기반 도구였음
많은 Git 사용자가git이 영국 영어로 “성마르고 비협조적이며 도움이 안 되는 사람”이라는 뜻도 있다는 걸 모르는 게 재미있음. 도구로서의 Git을 잘 설명하는 말임
다만 다른 버전 관리 시스템은 써본 적이 없어서 비교에는 약함. Jujutsu는 구글링하기도 어렵고, 문서도 나 같은 사람보다는 더 숙련된 버전 관리 사용자에게 맞춰진 듯함- Torvalds가
git을 고른 건 실제로 무례하고 성마른 사람이라는 뜻 때문이었다고 봄
- Torvalds가