컨덕터 주요 컨셉 5 : 깃 워크트리(Git worktrees)

 

Git 작업 트리

Conductor가 Git 작업 트리를 사용하여 격리된 코딩 에이전트 작업 공간을 생성하는 방법을 이해합니다.

Conductor는 Git 작업 트리를 사용하여 각 작업 공간에 고유한 파일, 분기, 명령, 채팅 및 검토 흐름을 제공합니다.

Git 워크트리는 동일한 저장소에 연결된 두 번째 작업 트리입니다. Conductor는 전체 프로젝트를 복사하거나 여러 에이전트가 하나의 체크아웃을 공유하도록 하는 대신, 각 워크스페이스마다 별도의 작업 트리를 생성합니다. 이를 통해 에이전트는 디스크에서 동일한 파일을 편집하지 않고도 병렬로 작업할 수 있습니다.

Git 자체에서 참조할 내용은 Git 공식 작업 트리 문서를 참조하세요 .

Conductor가 작업 트리를 사용하는 방법

Conductor는 워크스페이스를 생성하면 해당 워크스페이스에 대한 Git 작업 트리를 생성하고 그 안에 있는 브랜치를 체크아웃합니다.

해당 작업 공간은 나머지 워크플로를 담는 컨테이너가 됩니다.

  • 에이전트는 작업 공간 디렉터리 내의 파일을 편집합니다.
  • 설정, 실행, 터미널 및 테스트 명령은 해당 작업 공간 디렉터리에서 실행됩니다.
  • 워크스페이스 브랜치는 여러분이 검토하고, 푸시하고, 풀 리퀘스트로 전환하는 단위가 됩니다.
  • 채팅, 차이점 비교, PR 상태 및 아카이브 작업은 동일한 워크스페이스에 연결된 상태로 유지됩니다.
  • 작업 공간 메모 및 인수인계 관련 내용은 gitignore .context폴더에 저장할 수 있습니다.

원래 저장소 체크아웃은 프로젝트 루트로 유지됩니다. Conductor 워크스페이스는 일반적으로 아래에 생성되지만 ~/conductor/workspaces/<repo name>/<workspace name>, 각 워크스페이스는 여전히 동일한 기본 Git 저장소에 연결되어 있습니다.

고립된 것은 무엇인가

각 Conductor 워크스페이스는 고유한 작업 트리를 갖습니다. 즉, 코드 변경 사항, 생성된 파일, 로컬 터미널 명령 및 실행 중인 앱 프로세스는 메인 체크아웃이나 다른 에이전트의 작업이 아닌 하나의 작업에 속할 수 있습니다.

이것이 Conductor에서 병렬 에이전트를 위한 기반입니다.

  • 한 작업 공간에서는 기능을 구현하고 다른 작업 공간에서는 버그를 조사할 수 있습니다.
  • 하나의 브랜치는 검토 후 병합될 수 있으며, 다른 브랜치는 실험적인 상태로 유지될 수 있습니다.
  • 하나의 에이전트는 다른 워크스페이스의 터미널 상태를 점유하지 않고 개발 서버 또는 테스트를 실행할 수 있습니다.

워크스페이스 격리는 개발 환경 격리일 뿐 보안 경계는 아닙니다. 더 엄격한 제어를 설정하지 않는 한 에이전트와 명령은 사용자 권한으로 Mac에서 계속 실행됩니다.

공유되는 것

워크트리는 동일한 Git 저장소 데이터를 공유합니다. 동일한 히스토리, 참조, 원격 저장소 및 객체 데이터베이스를 사용하지만, 각 워크스페이스는 디스크에 자체 체크아웃을 가지고 있습니다.

공유된 Git 기반 덕분에 Conductor는 저장소를 다시 복제하지 않고도 워크스페이스를 빠르게 생성할 수 있습니다. 또한 일반적인 Git 작업도 그대로 작동합니다. originConductor UI 또는 터미널에서 커밋, 브랜치 이름 변경, 푸시, PR 열기, 병합 등을 수행할 수 있습니다.

컨덕터가 복사하는 내용

새로운 작업 트리는 추적된 파일부터 시작됩니다. Git은 메인 체크아웃에서 추적되지 않거나 무시된 로컬 파일을 자동으로 가져오지 않습니다.

이는 다음과 같은 파일에 중요합니다:

  • .env.local
  • 지역 인증서
  • 생성된 구성
  • 의도적으로 gitignore 처리된 도구 상태

새로운 작업 공간마다 특정 gitignore 파일이 필요한 경우, Files를 사용하여 파일을 복사하세요.worktreeinclude . Conductor는 `-style` 패턴을 사용하여 Git에서 이미 무시하는 파일만 복사합니다.

작업 공간에 파일 복사 대신 명령이 필요한 경우(예: 종속성 설치, 코드 생성, 심볼릭 링크 또는 데이터베이스 설정) 설정 스크립트를 사용하십시오 .

가지와 작업 트리

Git에서는 한 번에 하나의 워크트리에서만 브랜치를 체크아웃할 수 있습니다.

Conductor에서 이는 일반적으로 워크스페이스 브랜치가 정확히 하나의 워크스페이스에 속한다는 것을 의미합니다. 만약 어떤 브랜치가 이미 한 워크스페이스에서 체크아웃된 경우, Git은 다른 워크스페이스나 프로젝트 루트에서 동시에 동일한 브랜치를 체크아웃하는 것을 허용하지 않습니다.

여러 곳에서 비슷한 작업을 해야 할 때는 다음 패턴 중 하나를 사용하세요.

  • 각 작업 트리에 고유한 분기를 부여하세요.
  • 기존 브랜치에서 새 브랜치를 생성합니다.
  • 다른 곳으로 브랜치를 체크아웃하기 전에 첫 번째 작업 공간을 다른 브랜치로 전환하세요.

Conductor의 작업 공간 및 PR 흐름은 이 규칙을 중심으로 구축됩니다. 작업 공간 분기는 검토 단위이며, 작업 공간에는 에이전트 세션, 차이점, 터미널 상태 및 PR 상태가 함께 저장됩니다.

새 워크스페이스를 생성해야 하는 시점

작업에 별도의 브랜치, 파일, 실행 환경 및 검토 경로가 필요한 경우 별도의 Conductor 워크스페이스를 생성하십시오.

에이전트들이 동일한 브랜치와 최신 파일 상태를 기반으로 협업해야 할 경우, 하나의 작업 공간에 에이전트들을 유지하세요.

의사결정 모델에 대해서는 병렬 에이전트를 참조하십시오 . 전체 Conductor 작업 공간 모델에 대해서는 격리된 작업 공간을 참조하십시오 .

이것이 일반적인 Git 작업 트리와 어떻게 다른가

Git의 원시 작업 트리는 개별 체크아웃을 제공합니다. Conductor는 이러한 체크아웃을 기반으로 에이전트 워크플로를 구축합니다.

Conductor는 브랜치 및 작업 트리 생성, 허용된 로컬 파일 복사, 설정 및 실행 스크립트 실행, 차이점 표시 유지, 풀 리퀘스트 상태 연결, 작업 완료 시 워크스페이스 아카이빙과 같은 반복적인 워크스페이스 작업을 처리합니다.

워크스페이스 내에서도 일반 Git 명령어를 계속 사용할 수 있습니다. Conductor는 작업 트리에 구조를 추가하여 각 에이전트 작업이 실행, 검토, 병합 또는 폐기될 수 있는 명확한 위치를 제공합니다.

이 블로그의 인기 게시물

여러 코딩 에이전트를 병렬로 운영할 때 필요한 작업공간 관리 - 오케스트레이션