- 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