Scope

범위는 파일 시스템에 압축된 구성 요소와 해당 메타데이터를 "객체"로 저장합니다. .git/bit / .bit 디렉토리 에 저장된 작업 공간과 함께 로컬일 수 있습니다 . bit init --bare 에 의해 생성되는 원격에 있을 수 있습니다 .

원격에서 객체를 푸시/풀하려면 bit export , bit importbit fetch 를 사용 하십시오. 범위의 구성 요소 목록을 보려면 bit list 또는 하위 수준 bit cat-scope 명령을 사용하십시오.

구성 요소를 범위로 가져올 때 일반적으로 Bit는 직접 종속성과 해당 종속성을 재귀적으로 나타내는 모든 병합된 종속성을 가져옵니다. 또한 내보내기 프로세스 중에 구성 요소가 원격으로 푸시되면 Bit는 해당 구성 요소의 누락된 병합된 종속성을 모두 가져옵니다. 이는 간접 종속성 중 하나가 삭제되거나 해당 범위가 다운된 경우(이전의 "패드 왼쪽" 경우) 사용자를 보호합니다.

Objects

  • Component - 이름, 범위 이름, 헤드 해시 및 태그 목록과 같은 구성 요소에 대한 기본 데이터가 있습니다:해시.
  • Version - 스냅을 나타냅니다. 소스 파일 해시, 종속성 데이터, 빌드 데이터 등이 있습니다.
  • Source - 소스 파일/dist 파일
  • Lane - 구성 요소 ID 및 해당 레인 헤드

Export Process

내보내기 프로세스의 주요 과제는 여러 범위로 내보낼 때 범위를 일관되게 유지하는 것입니다. 사용자는 순환 종속성이 있는 다른 범위에 속한 구성 요소를 내보낼 수 있습니다. 예를 들어. scopeA/compA는 scopeA/compA에 의존하는 scopeB/compB에 의존한다. scopeA/compA의 데이터를 유지하지만 scopeB/compA를 유지하는 동안 실패하면 compA를 가져오는 사용자는 종속성 compB가 누락되어 잘못된 구성 요소를 얻게 됩니다.

Bit가 분산되어 있기 때문에 모든 범위를 한 번에 지속할 수 있는 중앙 위치가 없습니다. 데이터 무결성을 보장하기 위해 몇 가지 추가 단계가 필요합니다.

내보내기 중에 다음 단계가 실행됩니다.

  1. 데이터 전송 - 구성 요소를 다른 범위로 내보내고 원격의 pending-object/<export-id> 디렉터리에 임시로 저장 합니다. 이것은 비차단 단계입니다. 즉, 여러 클라이언트가 동시에 이 단계에 들어갈 수 있습니다.
  2. 유효성 검사 - 병합 충돌 또는 구성 요소 요구 사항 업데이트와 같은 오류 없이 개체를 병합할 수 있는지 확인합니다. 여기에서 '잠금'이 시작됩니다. 내보내기 ID가 여러 개인 경우 첫 번째 ID만 이 단계에 들어갈 수 있고 나머지는 ServerIsBusy 예외가 발생합니다. 잠그는 이유는 두 클라이언트가 동시에 내보내고 동일한 구성 요소에 대해 동시에 유효성을 검사하면 저장된 구성 요소에 대해 유효성을 검사하기 때문에 둘 다 성공할 수 있지만 둘 중 하나를 저장한 후 다른 하나는 충돌 오류가 발생하기 때문입니다. 어떤 대가를 치르더라도 피하고 싶은 지속 시간 동안. 이 단계에서 문제가 발생하면 리소스를 해제하기 위해 모든 범위에 대해 이 내보내기 ID의 보류 중인 개체가 삭제됩니다.
  3. 지속 - 보류 중인 개체에서 데이터를 로드하고 개체에 저장합니다. 구성 요소와 레인은 로컬 데이터가 손실되지 않도록 조심스럽게 병합됩니다. 범위의 지속이 성공적으로 완료되면 보류 중인 개체 디렉터리를 삭제하여 리소스를 해제합니다. 실패하면 보류 중인 개체가 삭제되지 않으므로 이 내보내기가 완료될 때까지 다른 내보내기에서 데이터를 푸시할 수 없습니다. 이 실패한 지속을 재개하려면 사용자가 --resume <export-id> 플래그를 사용하여 내보내기를 다시 실행할 수 있습니다. 내보내기를 실행한 사용자를 사용할 수 없는 경우 범위가 영원히 잠기지 않도록 하려면 bit resume-export <export-id> <remotes...> 를 원래 작업 공간 외부에서 실행할 수 있습니다.
  4. import-missing-dependencies - 위의 "범위" 섹션에서 설명한 대로 원격 범위에 내보낸 구성 요소의 모든 병합된 종속성이 있는지 확인하기 위한 것입니다. 이 단계에서 오류가 발생하면 프로세스가 계속 진행되고 내보내기가 취소되지 않습니다.

모든 단계가 완료되면 Bit는 .bitmap 파일을 새 버전과 필요한 경우 개체로 업데이트합니다. Bit는 로컬로 태그/스냅된 해시를 저장하기 때문에 서버로 전송되는 데이터는 최소화됩니다. 이것을 재정의하고 구성 요소의 모든 태그/스냅을 내보내려면 --all-versions 플래그를 사용하십시오.

Import Process

미정. 새로운 변경 사항은 여기에서 #3656 을 참조 하세요.