그룹 및 프로젝트 가져오기 및 마이그레이션

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab Dedicated

기존 프로젝트를 GitLab으로 가져오거나, GitLab 그룹 및 프로젝트를 다른 위치로 복사하는 방법은 다음과 같습니다:

  • 직접 전송을 사용하여 GitLab 그룹 및 프로젝트를 마이그레이션합니다.
  • 지원되는 가져오기 소스에서 가져오기합니다.
  • 다른 가져오기 소스에서 가져오기합니다.

GitLab에서 GitLab으로 마이그레이션하기

GitLab 인스턴스 간이나 동일한 GitLab 인스턴스 사이에서 GitLab 그룹 및 프로젝트를 복사하는 가장 좋은 방법은 직접 전송을 사용하는 것입니다.

다른 옵션으로는 그룹 전송을 사용하여 GitLab 그룹을 이동하는 것도 있습니다.

또한 지원되는 가져오기 소스인 GitLab 파일 익스포트를 사용하여 GitLab 프로젝트를 복사할 수도 있습니다.

지원되는 가져오기 소스

  • 모든 가져오기 도구는 GitLab Self-Managed 설치에서 기본적으로 비활성화됩니다. 이 변경은 GitLab 16.0에서 도입되었습니다.

기본적으로 사용 가능한 가져오기 소스는 사용하는 GitLab에 따라 달라집니다:

  • GitLab.com: 모든 사용 가능한 가져오기 소스가 기본적으로 활성화됩니다.
  • GitLab Self-Managed: 기본적으로 가져오기 소스가 비활성화되어 있으며 활성화해야 합니다.

GitLab은 이러한 지원되는 가져오기 소스에서 프로젝트를 가져올 수 있습니다.

가져오기 소스 설명
Bitbucket Cloud Bitbucket.org를 OmniAuth 제공자로 사용하여 Bitbucket 리포지터리를 가져옵니다.
Bitbucket Server Bitbucket Server(Stash로도 알려짐)에서 리포지터리를 가져옵니다.
FogBugz FogBugz 프로젝트를 가져옵니다.
Gitea Gitea 프로젝트를 가져옵니다.
GitHub GitHub.com 또는 GitHub Enterprise에서 가져옵니다.
GitLab 익스포트 GitLab 익스포트 파일을 사용하여 한 번에 프로젝트를 마이그레이션합니다.
Manifest 파일 Manifest 파일을 업로드합니다.
URL별 리포지터리 Git 리포지터리 URL을 제공하여 새 프로젝트를 만듭니다.

사용하지 않는 가져오기 소스 비활성화

신뢰하는 소스에서만 프로젝트를 가져옵니다. 신뢰할 수 없는 소스에서 프로젝트를 가져오면 공격자가 민감한 데이터를 탈취할 수 있습니다. 예를 들어, 악의적인 .gitlab-ci.yml 파일이 포함된 가져온 프로젝트는 공격자가 그룹 CI/CD 변수를 유출할 수 있도록 할 수 있습니다.

GitLab Self-Managed 관리자는 필요하지 않은 가져오기 소스를 비활성화하여 공격 가능한 표면을 줄일 수 있습니다:

  1. 왼쪽 사이드바에서 밑부분에서 관리 영역을 선택합니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성 및 액세스 제어를 확장합니다.
  4. 가져오기 소스로 스크롤합니다.
  5. 필요하지 않은 가져오기 도구에 대한 체크박스를 지웁니다.

다른 가져오기 소스

다음 다른 가져오기 소스로부터 가져오는 정보를 읽어볼 수도 있습니다:

Subversion으로부터 리포지터리 가져오기

GitLab은 Subversion 리포지터리를 자동으로 Git으로 마이그레이션할 수 없습니다. Subversion 리포지터리를 Git으로 변환하는 것은 어렵지만, git svn과 같은 매우 작고 기본적인 리포지터리에 대한 여러 도구가 존재합니다.

  • git svn: 매우 작고 기본적인 리포지터리에 대해 사용합니다.
  • reposurgeon: 더 크고 복잡한 리포지터리에 대해 사용합니다.

프로젝트 가져오기 내역 보기

본인이 만든 모든 프로젝트 가져오기를 볼 수 있습니다. 이 디렉터리에는 다음이 포함됩니다:

  • 외부 시스템에서 가져왔을 경우 원본 프로젝트 경로 또는 GitLab 프로젝트 마이그레이션 방법.
  • 대상 프로젝트 경로.
  • 각 가져오기의 시작 일자.
  • 각 가져오기의 상태.
  • 발생한 오류의 세부 정보.

프로젝트 가져오기 내역을 보려면:

  1. GitLab에 로그인합니다.
  2. 왼쪽 사이드바에서 상단에서 새로 만들기 ()를 선택하고 새 프로젝트/리포지터리를 선택합니다.
  3. 프로젝트 가져오기를 선택합니다.
  4. 우측 상단에서 내역 링크를 선택합니다.
  5. 특정 가져오기에 오류가 있다면, 해당 항목을 선택하여 오류를 확인합니다.

이력에는 기본이나 사용자 정의 템플릿으로부터 생성된 프로젝트도 포함됩니다. GitLab은 URL별 리포지터리로 가져오기를 사용하여 템플릿으로부터 새 프로젝트를 만듭니다.

LFS 객체를 포함한 프로젝트 가져오기

LFS 객체를 포함하는 프로젝트를 가져올 때, 프로젝트에 .lfsconfig 파일이 있고, URL 호스트(lfs.url)가 리포지터리 URL 호스트와 다른 경우 LFS 파일을 다운로드하지 않습니다.

전문 서비스를 활용하여 마이그레이션하기

원하는 경우, 직접하는 대신 GitLab 전문 서비스를 활용하여 그룹 및 프로젝트를 GitLab으로 마이그레이션할 수 있습니다. 자세한 내용은 전문 서비스 공식 카탈로그를 참조하세요.

문제 해결

가져온 리포지터리에 브랜치가 누락되어 있음

가져온 리포지터리에 원본 리포지터리의 모든 브랜치가 포함되지 않는 경우:

  1. 환경 변수 IMPORT_DEBUG=true를 설정합니다.
  2. 다른 그룹, 서브그룹 또는 프로젝트 이름으로 가져오기를 다시 시도합니다.
  3. 일부 브랜치가 여전히 누락된 경우, importer.log (예: jq와 함께)를 검토합니다.

예외: Error Importing repository - No such file or directory @ rb_sysopen - (filename)

이 오류는 리포지터리의 소스 코드를 tar.gz 파일로 다운로드한 경우 발생합니다.

가져오기에는 GitLab 익스포트 파일이 필요하며, 단순 리포지터리 다운로드 파일만으로는 안 됩니다.