우리 회사의 이눔 할은 ClearCase에서 우리의 소스 코드를 마이그레이션하기로 결정했습니다, 자식의 역사, 방울과 나무 개체 만들기, 즉 큰 :-)병렬
의 그은 ClearCase와 자식이 completly 다른 소스 코드 관리 시스템을 알고 . 그러나 개발자는 전체 기록을 포함하는 SCM을 하나만 갖게됩니다. 자식에 우리의 ClearCase 역사를 가져
내의 동료 발견 다음 도구 :
불행히도 우리의 코드는 이상 46000 개 소스 코드 파일과 역사를 가지고 https://github.com/charleso/git-cc 가져올 수는 10 년 이상이다.
이 도구를 분석 한 결과 제 생각에는 두 가지 병목 현상이 있습니다. 첫 번째는 clearcae 서버에서 파일을 가져 오는 것입니다. 여러 스레드에서이를 수행하면 쉽게 해결할 수 있습니다. 두 번째는 git-cc 자체의 워크 플로입니다.
- 가 파일과 그룹을의 변경 집합을 작성 cleartool의 lshistory를 통해 마스터 브랜치의 역사를 가져 COMIT의
- CC 서버에서 파일 (들)의 지정된 버전을 가져 오기 및 디렉토리를
- 자식 작업에 복사 추가.
- 자식 내가 낮은 수준의 자식 명령을 사용하여 다중 스레드를 사용하여 개선 할 수 있다고 생각
- 선택 다음 그룹을 커밋하고 다시 3으로
를 시작합니다.
각 comit-group은 서버에서 변경 사항을 쿼리하고 git 데이터베이스 내에 blob 객체를 생성하므로 여러 스레드에서 여러 그룹에 대해 실행할 수 있습니다. 추가 이제 막 생성 된 BLOB 객체에서 git 내역을 만드는 스레드가 하나 있습니다.
지금 내 질문이 너에게 의미가 있습니까? 아니면 내가 순진하다고 생각합니까?
git 잠금 메커니즘을 잊어 버렸습니까?
다른 아이디어가 있습니까?
일반적으로 가져 오기에는 [git-fast-import] (https://git-scm.com/docs/git-fast-import)를 사용하십시오. 그것이 여러 개의 CPU를 사용하는지는 모르지만 (아마도 모든 데이터를 단일 바이너리 스트림으로 가져옴에 따라), 적어도 여분의 IO를 수행하지는 않습니다. – max630
@ max630 안녕하세요 max630, 답장을 보내 주셔서 감사합니다. 여분의 I/O를 피하는 것이 좋은 지적입니다. 나는 그것을 평가할 것이다. – jungnick