GitLab에서 마이그레이션 정보
GitHub Enterprise Importer을 사용하여 GitLab의 리포지토리를 GitHub Enterprise Cloud(GitHub.com 또는 GHE.com)로 마이그레이션할 수 있습니다.
마이그레이션은 GL2GH extension of the GitHub CLI 마이그레이션 API를 감싼 크로스 플랫폼 명령줄 래퍼인 GitHub를 사용하여 수행됩니다. 각 리포지토리에 대해, GL2GH extension:
- **
** GitLab 프로젝트를
.tar.gzGit 리포지토리와 프로젝트 메타데이터(예: 문제, 병합 요청, 레이블, 중요 시점 및 릴리스)가 포함된 보관 파일로 내보냅니다. - 아카이브를 로컬에 스테이징합니다. 명령을 실행하는 머신에서 수행됩니다.
- 업로드합니다. 아카이브를 GitHub에서 읽을 수 있는 Blob Storage(즉, GitHub-owned blob storage 또는 AWS S3나 Azure Blob Storage의 고객 소유 스토리지 계정)에 업로드합니다.
- 아카이브를 대상 조직으로 가져옵니다. GitLab 엔터티를 이에 상응하는 GitHub 엔터티로 변환합니다.
엔터프라이즈 계정을 만들기 전에 엔터프라이즈에서 GitHub사용할 Enterprise Managed Users지 여부를 결정합니다. 이는 멤버가 인증하는 방법과 ID 및 액세스를 관리하는 방법에 영향을 줍니다. GitHub Enterprise Cloud에 대한 엔터프라이즈 유형 선택을(를) 참조하세요.
지원되는 GitLab 버전
GitLab.com 및 자체 관리형 GitLab 인스턴스 모두에서 마이그레이션할 수 있습니다.
GitHub Enterprise Importer 는 현재 유지 관리되는(비수명) 버전의 GitLab을 지원합니다. 유지 관리되는 버전 목록은 GitLab 설명서 의 지원 문을 참조하세요. 이전 버전은 테스트되거나 평가되지 않았습니다.
마이그레이션되는 데이터
데이터가 GitLab 내보내기 아카이브에 있으면 GitHub Enterprise Importer는 GitLab에서 GitHub Enterprise Cloud(으)로 다음 데이터를 마이그레이션합니다.
- Git 원본(커밋 기록 포함) 및 리포지토리 wiki
- 커밋 주석
- 기본 분기와 같이 깔끔하게 매핑되는 Project 구성
- 문제 상태 및 중요 시점 이벤트를 비롯한 문제 및 문제 주석
- 스레드 토론은 원래 스레드의 컨텍스트를 사용하여 플랫 주석으로 마이그레이션됩니다.
- 다음을 포함하여 끌어오기 요청으로 변환되는 병합 요청
- 주석(diff 데이터가 있을 때만 검토 주석으로 마이그레이션되고, 그렇지 않으면 플랫 이슈 주석으로 마이그레이션되며, 내보내기에서 최신 diff만 있음)
- 검토자 및 승인자
- 요청 상태 이벤트 병합
- 마일스톤
- 타임라인 이벤트
- 이모지 반응
- 업로드(첨부 파일)
- 릴리스 및 릴리스 자산
- Project 멤버(마네킹으로 마이그레이션됨)
마이그레이션되지 않는 데이터
다음 데이터는 마이그레이션되지 않습니다.
- Git LFS 객체: 포인터 파일은 Git 히스토리와 함께 이동하지만, 바이너리 객체는 후속 작업에서 마이그레이션 대상에 별도로 푸시해야 합니다. 자세한 내용은 리포지토리 복제을(를) 참조하세요.
- 병합 열차, 파이프라인 게이트, 필수 승인, 토픽, 아바타 및 미러링을 포함한 리포지토리 정책
- 그룹 설정 및 그룹 멤버 자격
- 코드 조각, 문제 보드, 시간 추적 데이터 및 디자인 관리 데이터
- CI/CD 파이프라인 및 파이프라인 예약(
.gitlab-ci.yml에 자동으로 대응되는 GitHub Actions 항목은 없음) - 취약성 보고서
- 웹후크, CI/CD 변수, 작업 추적 및 아티팩트, 자식 파이프라인 기록 및 파이프라인 트리거와 같이 GitLab이 내보내기에서 전혀 포함하지 않는 데이터
마이그레이션된 데이터에 대한 제한 사항
마이그레이션할 수 있는 항목 GitHub Enterprise Importer 에는 제한이 있습니다. 일부는 제한 사항 GitHub으로 인해 발생하지만 다른 일부는 자체의 GitHub Enterprise Importer 제한 사항입니다.
의 제한 사항 GitHub
- 단일 Git 커밋에 대한 2GiB 크기 제한: Git 리포지토리의 단일 커밋은 2GiB보다 클 수 없습니다. 커밋이 2GiB보다 큰 경우 커밋을 각각 2GiB 이하인 더 작은 커밋으로 분할해야 합니다.
- 단일 푸시에 대한 2GiB 크기 제한: 단일 푸시는 2GiB보다 클 수 없습니다. 큰 푸시는 오류와 함께 실패합니다
pack exceeds maximum allowed size. - Git 참조에 대한 255 바이트 제한: 일반적으로 "ref"라고 하는 단일 Git 참조는 255바이트보다 큰 이름을 가질 수 없습니다. 일반적으로 참조 길이는 255자를 초과할 수 없지만 이모지와 같은 ASCII가 아닌 문자는 둘 이상의 바이트를 사용할 수 있습니다. Git 참고자료가 너무 크면 명확한 오류 메시지가 반환됩니다.
- 100MiB 파일 크기 제한: 마이그레이션을 완료한 후에는 Git 리포지토리의 단일 파일이 100MiB를 초과할 수 없습니다. 리포지토리 마이그레이션 중에 이 제한은 400MiB로 증가합니다. 대용량 파일을 저장하는 데 사용하는 Git LFS 것이 좋습니다.
의 제한 사항 GitHub Enterprise Importer
- Git 리포지토리의 40GB 크기 제한(공개 미리 보기): 이 제한은 소스 코드에만 적용됩니다. 리포지토리 보관이 한도를 초과하는지 확인하려면 git-sizer 도구를 사용하고 출력의 총 미확인 개체 크기를 검토합니다. git-sizer 도구는 또한 마이그레이션에 영향을 미칠 수 있는 큰 파일 보고서, 미확인 개체 크기, 커밋 크기 및 트리 수와 관련된 잠재적인 문제를 식별하는 데 도움이 됩니다.
- 400MiB 파일 크기 제한: 리포지토리를 마이그레이션할 때 Git 리포지 GitHub Enterprise Importer토리의 단일 파일은 400MiB를 초과할 수 없습니다. 대용량 파일을 저장하는 데 사용하는 Git LFS 것이 좋습니다.
- **Git LFS 마이그레이션되지 않은 개체:**Importer 사용하는 Git LFS리포지토리를 마이그레이션할 수 있지만 LFS 개체 자체는 마이그레이션되지 않습니다. 마이그레이션이 완료된 후 후속작업으로 마이그레이션 대상에 푸시할 수 있습니다.
- 지연된 코드 검색 기능: 리포지토리가 마이그레이션된 후 검색 인덱스를 다시 인덱싱하는 데 몇 시간이 걸릴 수 있으며, 코드 검색은 다시 인덱싱이 완료될 때까지 예기치 않은 결과를 반환할 수 있습니다.
- 조직에 대해 구성된 규칙 집합으로 인해 마이그레이션 실패: 예를 들어 커밋 작성자의 이메일 주소가
@monalisa.cat(으)로 끝나야 하는 규칙을 구성하고 마이그레이션하려는 리포지토리에 이 규칙을 준수하지 않는 커밋이 포함되어 있으면 마이그레이션이 실패합니다. - 마네킹 콘텐츠가 검색되지 않을 수 있습니다. 마네킹은 가져온 콘텐츠(예: 이슈, 끌어오기 요청, 메모 등)가 연결된 자리 표시자 사용자입니다. 할당된 이슈와 같이 마네킹과 연결된 콘텐츠를 검색하는 경우 이슈를 찾지 못할 수 있습니다. 마네킹이 회수되면 새 소유자를 통해 콘텐츠를 찾아야 합니다.
GitLab의 제한 사항
- GitLab 내보내기 보관에 대한 40GB 제한: GitLab의 프로젝트 내보내기 API는 GitLab.com 40GB보다 큰 보관 파일을 생성하지 않습니다. 원본 크기 제한과 GitHub 달리 프로젝트 메타데이터와 Git 원본을 비롯한 전체 내보내기 보관에 적용됩니다. 이 제한은 GitLab에 의해 설정되며 자체 관리형 인스턴스에 따라 다를 수 있습니다.