GitHub에서 GitLab으로 가져오기
가져오기 도구를 사용하여 GitHub 리포지터리를 GitLab.com 또는 자체 관리형 GitLab 인스턴스로 가져올 수 있습니다.
프로젝트의 다음 항목을 가져옵니다.
- 리포지터리 설명 (GitLab.com 및 7.7+)
- Git repository 데이터 (GitLab.com 및 7.7+)
- Issues (GitLab.com 및 7.7+)
- Pull requests (GitLab.com 및 8.4 이상)
- Wiki 페이지 (GitLab.com 및 8.4 이상)
- 마일스톤 (GitLab.com 및 8.7 이상)
- 레이블 (GitLab.com 및 8.7 이상)
- 릴리즈 노트 설명 (GitLab.com 및 8.12+)
- Pull request 리뷰 코멘트 (GitLab.com & 10.2+)
- Pull request 리뷰 (GitLab.com & 13.7+)
- Pull request “merged by” 정보 (GitLab.com & 13.7+)
- 정기적인 이슈 및 Pull request 코멘트
- Git LFS (대용량 파일 저장소) 개체
Pull request 및 이슈에 대한 참조는 유지되며(GitLab.com 및 8.7+), 가져온 각 저장소 는 가시성 수준이 제한되지 않는 한 가시성 수준을 유지하며, 이 경우 기본 프로젝트 가시성으로 기본 설정됩니다.
네임스페이스는 gitlab.com/janedoe
또는 gitlab.com/customer-success
과 같은 GitLab에서 사용자나 그룹입니다. Rails 콘솔에서 프로젝트를 다른 네임스페이스로 이동하기 위해 몇 가지 일괄 작업을 수행할 수 있습니다.
이 프로세스는 GitHub에서 GitLab으로 어떤 유형의 그룹이나 조직도 마이그레이션하거나 가져오지 않습니다.
사용 사례
수행하는 단계는 GitHub.com 또는 GitHub Enterprise에서 가져오는지 여부와 GitLab.com 또는 자체 관리형 GitLab 인스턴스로 가져오는지 여부에 따라 다릅니다.
- GitLab.com으로 가져오는 경우, 개인 액세스 토큰을 사용하여 GitHub 리포지터리를 가져올 수도 있습니다. 이 방법은 모든 사용자 활동(예 : 이슈 및 풀 리퀘스트)을 일치하는 GitLab 사용자와 연결하지 않으므로 권장하지 않습니다.
- 자체 관리형 GitLab 인스턴스로 가져오는 경우, Sidekiq 작업자의 제약 없이 GitHub Rake 작업을 대신 사용하여 프로젝트를 가져올 수 있습니다.
- GitHub Enterprise에서 자체 관리형 GitLab 인스턴스로 가져오는 경우, 먼저 GitHub 통합 사용 설정을 해야 합니다.
- GitHub Enterprise에서 GitLab.com으로 프로젝트를 가져오려면 Import API를 사용하세요.
- GitHub.com에서 자체 관리형 GitLab 인스턴스로 가져오는 경우, GitHub 통합을 설정할 필요가 없습니다. Import API를 사용할 수 있습니다.
작동 원리
이슈와 풀 리퀘스트를 가져올 때 가져오기 도구는 GitLab 인스턴스의 데이터베이스에서 GitHub 작성자 및 담당자를 찾으려고 시도합니다. (GitLab에서는 풀 리퀘스트를 "Merge requests"라고 함)
이 연결이 성공하려면 저장소의 각 GitHub 작성자 및 담당자가 가져오기 전에 다음 조건 중 하나를 충족해야 합니다.
- 이전에 GitHub 아이콘을 사용하여 GitLab 계정에 로그인
- GitLab 계정의 이메일 주소와 일치하는 공개 이메일 주소가 있는 GitHub 계정 소유
GitHub 계정을 사용하는 GitLab 콘텐츠를 가져오려면 GitHub 공개 이메일 주소가 채워져야 합니다. 그러면 모든 코멘트와 기여가 GitLab의 동일한 사용자에게 올바르게 매핑됩니다. GitHub Enterprise(온 프 레미스)에서는 제품을 사용하기 위해 이 필드를 채울 필요가 없으므로 가져온 콘텐츠가 새 시스템의 사용자에게 제대로 매핑되도록 기존 GitHub Enterprise 계정에 추가해야 할 수 있습니다. 해당 주소를 추가하는 방법에 대한 지침은 GitHub 설명서를 참조하십시오.
프로젝트에서 참조된 사용자가 GitLab 데이터베이스에 없는 경우, 프로젝트 작성자 (일반적으로 가져오기 프로세스를 시작한 사용자)가 작성자/담당자로 설정되지만, 원래 GitHub 작성자를 언급하는 이슈에 대한 메모가 추가됩니다.
가져오기 도구는 새 네임스페이스(그룹)가 존재하지 않는 경우 생성하거나, 네임스페이스를 사용하는 경우 가져오기 프로세스를 시작한 사용자의 네임스페이스 아래에 리포지터리를 가져옵니다. 적절한 권한으로 네임스페이스/리포지터리 이름을 편집할 수도 있습니다.
가져오기 도구는 오픈 풀 리퀘스트와 관련된 프로젝트 포크(Forks)의 브랜치도 가져옵니다. 이러한 브랜치는 GH-SHA-username/pull-request-number/fork-name/branch
와 유사한 명명 체계를 사용하여 가져옵니다. 이로 인해 GitHub 리포지터리와 비교하여 브랜치에서 불일치가 발생할 수 있습니다.
추가 기술 세부 정보는 GitHub Importer 개발자 문서를 참조하세요.
가져오기 프로세스에 대한 개요는 GitHub에서 GitLab으로 마이그레이션 비디오를 참조하세요.