Jujutsu(JJ) 0.46.0은 기본 워크스페이스 외에도 Git 워크트리를 이용해 워크스페이스를 함께 배치할 수 있도록 했다. 여러 원격 저장소로 동시에 푸시하는 기능과 작업 사본을 바꾸지 않고 특정 리비전의 파일을 편집·삭제하는 명령도 추가했다.

워크스페이스와 Git 연동

jj workspace add에 --colocate와 --no-colocate 옵션이 추가됐다. 기본 동작은 현재 워크스페이스가 공동 배치 상태이고 git.colocate 설정이 true일 때 공동 배치하는 것이다. jj workspace forget은 해당 Git 워크트리도 제거한다. 하위 워크스페이스에서도 jj git colocation status·enable·disable을 사용할 수 있으며, 생성 뒤에도 공동 배치를 켜거나 끌 수 있다.

jj workspace remove는 워크스페이스와 디스크상의 디렉터리를 제거하며, 제거 전에 작업 사본 상태를 커밋으로 저장한다. jj workspace list와 jj workspace root는 더 이상 도달할 수 없는 경로도 기록된 경로라면 표시한다. jj workspace root에서는 경고도 함께 보여준다.

새 명령과 사용 조건

jj file edit와 jj file delete를 사용하면 작업 사본을 바꾸지 않고 임의의 리비전에 있는 파일을 편집하거나 삭제할 수 있다. jj git push는 여러 원격 저장소로 동시에 푸시하며, git.push 설정에 문자열 패턴 또는 패턴 배열을 지정하거나 반복 가능한 --remote 옵션을 사용할 수 있다. 기본 푸시 대상 리비전은 revsets.git-push로 설정할 수 있다.

이번 버전부터 필요한 최소 Git 버전은 2.42.0이다. jj workspace add가 Git 2.42.0에서 추가된 git worktree add --orphan을 사용하기 때문이다. 최소 지원 Rust 버전(MSRV)은 1.97.1로 올라갔다.

동작 변경과 수정 사항

jj bisect run은 이분 탐색을 진행하기 전에 일관성 검사를 실행한다. 검사에서는 명령이 양호한 리비전과 불량한 리비전을 구분할 수 있는지, 지정한 리비전 집합에서 작업 사본이 불량 상태에서 양호 상태로 이동하는지를 확인한다. --trust-endpoints 옵션을 사용하면 이 검사를 끌 수 있다. jj split은 분할된 커밋의 설명을 한 번의 편집기 세션에서 편집한다.

jj undo와 jj redo는 이제 다른 워크스페이스에서 수행한 작업을 기본적으로 되돌리지 않는다. 필요하면 --allow-cross-workspace를 사용한다. 템플릿 함수 List.get(), .first(), .last()는 범위를 벗어난 접근에서 오류를 내는 대신 Option<T>를 반환한다.

Windows에서는 SSH가 키 암호 구문이나 알 수 없는 호스트 키 확인을 요청할 때 jj가 멈추던 문제가 수정됐다. 희소 작업 사본(sparse working copy)에서 .gitignore 파일이 작업 사본에 표시되지 않더라도 무시 규칙을 적용하며, 심볼릭 링크를 통해 연결된 저장소 내부 .gitignore는 Git 동작과 같이 읽지 않는다. 관련 변경 사항은 #6745, #8547, #8661, #9991, #2289, #7161에서 확인할 수 있다.

버전 정보와 설치 안내는 Jujutsu 0.46.0 릴리스, 설치 지침에서 볼 수 있다. 전체 태그는 태그 목록에서 확인할 수 있으며, 릴리스 커밋은 7d38231이다.