워크스페이스에 저장소 추가
이 가이드에서는 Git 체크아웃을 워크스페이스에 등록하고, 다시 인덱싱한 다음, 제거하는 방법을 설명합니다.
저장소는 워크스페이스 범위입니다. 전역 레지스트리도, 연결 단계도 없습니다. 저장소를 추가하는 일과 그것을 워크스페이스에 넣는 일은 같은 동작입니다. 같은 체크아웃을 두 워크스페이스에 등록하면 서로 다른 두 개의 id를 가진 두 개의 독립된 행이 됩니다. 워크스페이스를 넘어서는 순간 저장소의 정체성은 파일 시스템 경로이며, id는 결코 아닙니다.
시작하기 전에
섹션 제목: “시작하기 전에”폴더는 다음 세 가지를 모두 충족할 때만 등록할 수 있습니다:
- git 워크트리 안에 있어야 합니다.
- 그 워크트리에
origin원격이 있어야 합니다. origin원격이 지원되는 forge를 가리켜야 합니다: github.com, gitlab.com, bitbucket.org.
그 밖의 경우는 등록 시점에 명시적인 메시지와 함께 거부됩니다: “Folder is not
inside a git work tree.”, “No origin remote configured for this repository.”,
“The origin remote is not hosted on a supported forge (github.com, gitlab.com,
bitbucket.org).”. 로컬 전용 모드는 없습니다.
forge는 원격에서 읽어 저장소에 저장되며, 사용자가 직접 고르는 값이 아닙니다.
워크스페이스 하나가 세 forge의 저장소를 동시에 담을 수 있고, 각 저장소와는 자체
자격 증명을 가진 자체 API로 통신합니다. GitLab의 중첩 네임스페이스는 그대로
유지되므로, gitlab.com/group/subgroup/project는 소유자 group/subgroup, 이름
project로 등록됩니다.
폴더는 cc_server를 호스팅하는 머신에 있어야 하며, 그 서버의 --repo-roots
디렉터리 중 하나 안에 있어야 합니다. 이 허용 목록의 기본값은 서버 사용자의 홈
디렉터리이며, 루트보다 위로 탐색하는 것은 거부됩니다.
체크아웃 등록
섹션 제목: “체크아웃 등록”- 설정 → 워크스페이스 → 리포지토리(
/workspaces/<id>/settings/workspace/repositories)를 엽니다. - 리포지토리 추가를 클릭합니다.
이 대화 상자는 사용자의 파일 시스템이 아니라 서버의 파일 시스템을 탐색하는 브라우저입니다. 데스크톱, 웹, 휴대폰에서 흐름이 같습니다. 네이티브 폴더 선택기를 쓰면 엉뚱한 머신의 폴더를 고르게 되기 때문입니다.
- 서버에 구성된 루트 안에서 탐색합니다. git 체크아웃인 폴더에는 표시가 붙습니다.
- 원하는 만큼 선택합니다. 탐색하는 동안 선택이 유지되므로, 여러 폴더에서 체크아웃을 모을 수 있습니다.
- 한 번에 일괄 등록합니다.
선택 하나가 실패해도 나머지 일괄 처리분이 버려지지 않습니다. 생성된 id와 함께, 거부된 경로마다 개별 오류가 표시됩니다. 이 워크스페이스에 이미 있는 경로를 다시 등록하면 중복을 만들지 않고 기존 저장소를 반환합니다.
등록된 각 저장소는 목록에 owner/name, forge를 나타내는 배지, 서버상의 경로와
함께 표시됩니다. GitHub 저장소는 소유자의 아바타도 보여 주지만, 다른 forge는
소유자 아바타 URL을 유추할 수 없어 이니셜로 대체합니다.
forge 배지는 여러 forge가 섞인 워크스페이스에서 중요합니다. 서로 다른 forge의 두
저장소가 모두 acme/web이라고 불릴 수 있는데, 리뷰로 무엇을 할 수 있는지, 링크가
어디로 향하는지가 서로 다르게 동작합니다.
다음에 일어나는 일
섹션 제목: “다음에 일어나는 일”등록은 이 워크스페이스 범위의 RepoAdded 이벤트를 발생시키고, 이것이 해당
체크아웃의 index_code 파이프라인을 시작합니다. 이 파이프라인이 코드 그래프를
채우므로, 검색과 영향 분석이 답할 수 있는 대상이 생깁니다.
언어별 문법이 함께 제공되는 파일만 인덱싱됩니다(Dart, JavaScript, TypeScript, TSX, PHP, Python, Rust, Zig, C, C++, Go, Java, Ruby, C#, Swift, Kotlin, R, Assembly, MATLAB, Ada). 코드 그래프로 코드 검색을 참고하세요.
저장소 다시 인덱싱
섹션 제목: “저장소 다시 인덱싱”각 행에는 코드 인덱싱 버튼이 있습니다. 클릭하면 그 체크아웃의 인덱서가 다시 실행됩니다. 실행되는 동안 버튼은 전체 파일 수 대비 완료한 파일 수를 보여 주는 진행 표시로 바뀌고 취소 컨트롤이 함께 나타납니다. 실행이 끝나면 심볼 개수와 함께 체크 표시로 바뀌고, 실행이 실패했다면 경고가 표시됩니다.
저장소 순서 변경
섹션 제목: “저장소 순서 변경”행의 핸들을 끌어 옮깁니다. 설정한 순서가 앱의 모든 저장소 목록이 읽어 들이는 순서가 됩니다.
GitHub 링크 수정
섹션 제목: “GitHub 링크 수정”행의 링크 아이콘을 누르면 저장소의 GitHub 소유자와 리포지토리 이름을 편집하는 화면이 열립니다. 원격의 이름이 바뀌었거나 다른 곳으로 이전되었을 때 유용합니다.
저장소 제거
섹션 제목: “저장소 제거”- 설정 → 워크스페이스 → 리포지토리를 엽니다.
- 행의 휴지통 아이콘을 클릭합니다.
- “워크스페이스에서 리포지토리를 제거할까요?“를 확인합니다.
대화 상자는 수행할 작업을 그대로 알려 줍니다: “name이(가) 이 워크스페이스에서 제거됩니다. 디스크의 로컬 파일은 변경되지 않습니다.”
제거하면 이 워크스페이스에서 저장소 행이 삭제되고, 그 저장소의 코드 그래프 행 — 심볼, 엣지, 파일, 인덱스 체크포인트 — 이 연쇄적으로 정리됩니다. 여기에 더해 그 저장소에 대한 멤버별 저장소 부여, 스페이스-저장소 연결, 격리된 체크아웃 기록도 함께 삭제됩니다. 다른 워크스페이스에 등록된 같은 체크아웃은 독립된 행이므로 영향을 받지 않습니다. 그 기록들이 가리키던 디스크상의 워크트리는 이 삭제로 함께 정리되지 않습니다.