Skip to main content

GitLab에서 GitHub 마이그레이션 이해

GitHub Enterprise Importer 는 GitLab에서 마이그레이션을 자동화합니다.

GitLab에서 마이그레이션 정보

리포지토리를 GitLab에서 (GitHub Enterprise Importer또는GitHub Enterprise Cloud)로 마이그레이션하는 데 GitHub.com 사용할 GHE.com 수 있습니다.

마이그레이션은 마이그레이션 API를 GL2GH extension of the GitHub CLI중심으로 플랫폼 간 명령줄 래퍼인 마이그레이션을 GitHub 수행합니다. 각 리포지토리에 대해 다음을 수행 GL2GH extension합니다.

  1. ** ** GitLab 프로젝트를 .tar.gz Git 리포지토리와 프로젝트 메타데이터(예: 문제, 병합 요청, 레이블, 중요 시점 및 릴리스)가 포함된 보관 파일로 내보냅니다.
  2. ** ** 명령을 실행하는 컴퓨터에서 로컬로 보관을 단계별로 지정합니다.
  3. 보관 파일을 읽을 수 있는 GitHub Blob Storage에 업로드합니다(AWS S3 또는 Azure Blob Storage 소유한 스토리지 계정 중 하나GitHub-owned blob storage).
  4. 보관 파일을 대상 조직으로 가져와 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 objects: 포인터 파일은 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에 의해 설정되며 자체 관리형 인스턴스에 따라 다를 수 있습니다.