InfoGrab Docs

Bitbucket Server에서 마이그레이션

요약

Bitbucket Server에서 GitLab으로 프로젝트를 가져옵니다. Bitbucket Server 가져오기 도구는 Bitbucket Server에서 항목의 일부를 가져옵니다. Bitbucket Server 가져오기 도구는 GitLab.com 및 GitLab Self-Managed에 대한 사용자 기여의 마이그레이션 후 매핑을 지원합니다.

히스토리
  • GitLab 13.4에서 bitbucket_server_user_mapping_by_username이라는 플래그와 함께 이메일 주소 또는 사용자 이름으로 사용자 매핑이 도입. 기본적으로 비활성화됨.
  • GitLab 16.0에서 Developer 역할 대신 Maintainer 역할 요구 사항이 도입되었으며 GitLab 15.11.1 및 GitLab 15.10.5에 백포트됨.
  • GitLab 15.9에서 프로젝트 다시 가져오기 기능이 도입.
  • GitLab 16.3에서 검토자 가져오기 기능이 도입.
  • GitLab 16.7에서 풀 리퀘스트 승인 가져오기 지원이 도입.
  • GitLab 16.8에서 GitLab 사용자에게 사용자 멘션 매핑이 추가.
  • GitLab 17.1에서 이메일 주소로만 사용자 매핑하도록 변경.
  • GitLab 17.2에서 일부 가져온 항목에 가져옴 배지가 도입.
  • GitLab 17.8에서 GitLab.com에서 마이그레이션 후 사용자 기여 및 멤버십 매핑으로 변경.
  • GitLab 17.8에서 GitLab.com 및 GitLab Self-Managed에서 마이그레이션 후 사용자 및 기여 멤버십 매핑이 활성화.

Bitbucket Server에서 GitLab으로 프로젝트를 가져옵니다.

Bitbucket Server 가져오기 도구는 Bitbucket Server에서 항목의 일부를 가져옵니다.

Bitbucket Server 항목 가져옴
저장소 설명
Git 저장소 데이터
풀 리퀘스트 (댓글, 사용자 멘션, 검토자, 머지 이벤트 포함)
LFS 오브젝트
코드 댓글1
스레드2
프로젝트 필터3
Markdown의 첨부 파일
작업 목록
이모지 반응
풀 리퀘스트 승인
풀 리퀘스트 승인 규칙

각주:

  1. GitLab은 임의의 코드 줄에 댓글을 허용하지 않습니다. 범위를 벗어난 Bitbucket 댓글은 MR에 댓글로 삽입됩니다.
  2. 여러 스레딩 레벨은 하나의 스레드로 축소되고 인용은 원래 댓글의 일부로 추가됩니다.
  3. 프로젝트 필터링은 퍼지 검색을 지원하지 않습니다. 시작하는 문자 또는 전체 일치 문자열만 지원됩니다.

가져오기 도구 워크플로#

Bitbucket Server 가져오기 도구는 GitLab.com 및 GitLab Self-Managed에 대한 사용자 기여의 마이그레이션 후 매핑을 지원합니다. 가져오기 도구는 또한 대안적인 매핑 방법을 지원합니다.

Bitbucket Server 항목을 가져올 때:

  • 저장소 공개 액세스가 유지됩니다. Bitbucket에서 저장소가 비공개이면 GitLab에서 비공개로 생성됩니다.
  • 가져온 MR 및 댓글에는 GitLab에 가져옴 배지가 표시됩니다.

닫히거나 머지된 풀 리퀘스트를 가져올 때 저장소에 없는 커밋 SHA는 Bitbucket Server에서 가져와 풀 리퀘스트에 커밋이 연결되도록 합니다:

  • 소스 커밋 SHA는 refs/merge-requests/<iid>/head 형식의 참조로 저장됩니다.
  • 대상 커밋 SHA는 refs/keep-around/ 형식의 참조로 저장됩니다.

소스 커밋이 저장소에 없는 경우 커밋 메시지에 SHA가 포함된 커밋이 대신 사용됩니다.

가져오기 기간 추정#

Bitbucket Server에서의 모든 가져오기는 다르며, 이는 수행하는 가져오기의 기간에 영향을 미칩니다. 그러나 가져오기 기간을 추정하는 데 도움을 주기 위해, 다음 데이터로 구성된 프로젝트는 가져오는 데 약 8시간이 걸릴 수 있습니다:

  • 13,000개의 풀 리퀘스트
  • 7,000개의 태그
  • 500 GiB 저장소

전제 조건#

  • Bitbucket Server는 GitLab 인스턴스에서 액세스할 수 있어야 합니다. Bitbucket Server URL은 공개적으로 확인 가능하거나 GitLab이 실행되는 네트워크에서 액세스할 수 있어야 합니다.
  • Bitbucket Server 가져오기 소스를 활성화하거나 GitLab 관리자에게 활성화를 요청해야 합니다. GitLab.com에서 기본적으로 활성화됩니다.
  • 가져올 대상 그룹에 Maintainer 또는 소유자 역할.
  • 관리자 액세스 권한이 있는 Bitbucket Server 인증 토큰. 관리자 액세스 없이는 일부 데이터가 가져오지 않습니다.

Bitbucket Server 저장소 가져오기#

Bitbucket Server 저장소를 가져오려면:

  1. GitLab에 로그인합니다.
  2. 오른쪽 상단에서 새로 만들기 (+)를 선택하고 새 프로젝트/저장소를 선택합니다.
  3. 프로젝트 가져오기를 선택합니다.
  4. Bitbucket Server를 선택합니다.
  5. Bitbucket에 로그인하고 GitLab에 Bitbucket 계정 액세스 권한을 부여합니다.
  6. 가져올 프로젝트를 선택하거나 모든 프로젝트를 가져옵니다. 이름으로 프로젝트를 필터링하고 각 프로젝트를 가져올 네임스페이스를 선택할 수 있습니다.
  7. 프로젝트를 가져오려면:
    • 처음에는 가져오기를 선택합니다.
    • 이후에는 다시 가져오기를 선택합니다. 새 이름을 지정하고 다시 가져오기를 다시 선택합니다. 다시 가져오기는 소스 프로젝트의 새 복사본을 만듭니다.

대안적인 매핑 방법#

가져오기에 대한 대안적인 사용자 기여 매핑 방법을 사용하기 위해 bitbucket_server_user_mapping 기능 플래그를 비활성화할 수 있습니다.

GitLab.com으로 가져오기의 경우 대신 마이그레이션 후 방법을 사용해야 합니다.

Feature flag

이 기능의 가용성은 기능 플래그로 제어됩니다. 이 기능은 권장되지 않으며 GitLab.com으로의 마이그레이션에서는 사용할 수 없습니다. 이 매핑 방법에서 발견된 문제는 수정될 가능성이 없습니다. 이러한 제한이 없는 마이그레이션 후 방법을 대신 사용하십시오.

자세한 내용은 이슈 512213을 참조하십시오.

대안적인 방법을 사용하면 가져오기 도구는 Bitbucket Server 사용자의 이메일 주소를 GitLab 사용자 데이터베이스의 확인된 이메일 주소와 매핑하려고 합니다. 사용자를 찾지 못하면:

  • 프로젝트 생성자가 대신 사용됩니다. 가져오기 도구는 댓글에 원래 생성자를 표시하는 노트를 추가합니다.
  • 풀 리퀘스트 검토자의 경우 검토자가 할당되지 않습니다.
  • 풀 리퀘스트 승인자의 경우 승인이 추가되지 않습니다.

풀 리퀘스트 설명 및 노트의 멘션은 사용자의 이메일 주소를 사용하여 Bitbucket Server의 사용자 프로필에 매핑됩니다. 같은 이메일 주소를 가진 사용자가 GitLab에서 찾을 수 없는 경우 멘션은 정적으로 만들어집니다. 사용자가 매핑되려면 프로젝트에 대한 읽기 액세스 이상을 제공하는 GitLab 역할이 있어야 합니다.

프로젝트가 공개인 경우 GitLab은 프로젝트에 초대된 사용자만 매핑합니다.

가져오기 도구는 존재하지 않는 경우 새 네임스페이스(그룹)를 만듭니다. 네임스페이스가 이미 사용 중인 경우 저장소는 가져오기 프로세스를 시작한 사용자의 네임스페이스 아래에 가져옵니다.

문제 해결#

다음 섹션에는 발생할 수 있는 문제에 대한 해결책이 포함되어 있습니다.

일반#

GUI 기반 가져오기 도구가 작동하지 않는 경우 다음을 시도해 볼 수 있습니다:

Bitbucket Cloud의 문제 해결 섹션을 참조하십시오.

LFS 오브젝트가 가져오지 않음#

프로젝트 가져오기는 완료되었지만 LFS 오브젝트를 다운로드하거나 복제할 수 없는 경우 특수 문자가 포함된 비밀번호 또는 개인 액세스 토큰을 사용하고 있을 수 있습니다. 자세한 내용은 이슈 337769를 참조하십시오.

유효하지 않거나 확인할 수 없는 호스트 주소로 인한 가져오기 실패 또는 가져오기 URL 차단#

초기 Bitbucket 서버 연결에 성공했음에도 불구하고 Importing the project failed: Import URL is blocked와 같은 오류 메시지와 함께 프로젝트 가져오기가 실패하면 Bitbucket 서버 또는 역방향 프록시가 올바르게 구성되지 않았을 수 있습니다.

이 문제를 해결하려면 Projects API를 사용하여 새로 만든 프로젝트를 확인하고 프로젝트의 import_url 값을 찾습니다.

이 값은 가져오기에 사용할 Bitbucket 서버가 제공한 URL을 나타냅니다. 이 URL이 공개적으로 확인할 수 없는 경우 확인 불가 주소 오류가 발생할 수 있습니다.

이 문제를 해결하려면 Bitbucket 서버가 프록시 서버를 인식하도록 해야 합니다. 프록시 서버가 Bitbucket이 URL을 구성하고 사용하는 방법에 영향을 줄 수 있기 때문입니다. 자세한 내용은 Bitbucket 프록시 및 보안을 참조하십시오.

JSON::NestingError로 인한 가져오기 실패#

JSON::NestingError가 포함된 오류 메시지와 함께 프로젝트 가져오기가 실패하면 Bitbucket Server 응답이 max_http_response_json_depth 설정을 초과하는 깊이 중첩된 오브젝트를 포함합니다.

이 문제를 해결하려면 아웃바운드 요청에서 JSON HTTP 응답의 최대 허용 중첩 깊이를 늘립니다.

관련 주제#

Bitbucket Server에서 마이그레이션

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

Bitbucket Server에서 GitLab으로 프로젝트를 가져옵니다. Bitbucket Server 가져오기 도구는 Bitbucket Server에서 항목의 일부를 가져옵니다. Bitbucket Server 가져오기 도구는 GitLab.com 및 GitLab Self-Managed에 대한 사용자 기여의 마이그레이션 후 매핑을 지원합니다.

히스토리
  • GitLab 13.4에서 bitbucket_server_user_mapping_by_username이라는 플래그와 함께 이메일 주소 또는 사용자 이름으로 사용자 매핑이 도입. 기본적으로 비활성화됨.
  • GitLab 16.0에서 Developer 역할 대신 Maintainer 역할 요구 사항이 도입되었으며 GitLab 15.11.1 및 GitLab 15.10.5에 백포트됨.
  • GitLab 15.9에서 프로젝트 다시 가져오기 기능이 도입.
  • GitLab 16.3에서 검토자 가져오기 기능이 도입.
  • GitLab 16.7에서 풀 리퀘스트 승인 가져오기 지원이 도입.
  • GitLab 16.8에서 GitLab 사용자에게 사용자 멘션 매핑이 추가.
  • GitLab 17.1에서 이메일 주소로만 사용자 매핑하도록 변경.
  • GitLab 17.2에서 일부 가져온 항목에 가져옴 배지가 도입.
  • GitLab 17.8에서 GitLab.com에서 마이그레이션 후 사용자 기여 및 멤버십 매핑으로 변경.
  • GitLab 17.8에서 GitLab.com 및 GitLab Self-Managed에서 마이그레이션 후 사용자 및 기여 멤버십 매핑이 활성화.

Bitbucket Server에서 GitLab으로 프로젝트를 가져옵니다.

Bitbucket Server 가져오기 도구는 Bitbucket Server에서 항목의 일부를 가져옵니다.

Bitbucket Server 항목 가져옴
저장소 설명
Git 저장소 데이터
풀 리퀘스트 (댓글, 사용자 멘션, 검토자, 머지 이벤트 포함)
LFS 오브젝트
코드 댓글1
스레드2
프로젝트 필터3
Markdown의 첨부 파일
작업 목록
이모지 반응
풀 리퀘스트 승인
풀 리퀘스트 승인 규칙

각주:

  1. GitLab은 임의의 코드 줄에 댓글을 허용하지 않습니다. 범위를 벗어난 Bitbucket 댓글은 MR에 댓글로 삽입됩니다.
  2. 여러 스레딩 레벨은 하나의 스레드로 축소되고 인용은 원래 댓글의 일부로 추가됩니다.
  3. 프로젝트 필터링은 퍼지 검색을 지원하지 않습니다. 시작하는 문자 또는 전체 일치 문자열만 지원됩니다.

가져오기 도구 워크플로#

Bitbucket Server 가져오기 도구는 GitLab.com 및 GitLab Self-Managed에 대한 사용자 기여의 마이그레이션 후 매핑을 지원합니다. 가져오기 도구는 또한 대안적인 매핑 방법을 지원합니다.

Bitbucket Server 항목을 가져올 때:

  • 저장소 공개 액세스가 유지됩니다. Bitbucket에서 저장소가 비공개이면 GitLab에서 비공개로 생성됩니다.
  • 가져온 MR 및 댓글에는 GitLab에 가져옴 배지가 표시됩니다.

닫히거나 머지된 풀 리퀘스트를 가져올 때 저장소에 없는 커밋 SHA는 Bitbucket Server에서 가져와 풀 리퀘스트에 커밋이 연결되도록 합니다:

  • 소스 커밋 SHA는 refs/merge-requests/<iid>/head 형식의 참조로 저장됩니다.
  • 대상 커밋 SHA는 refs/keep-around/ 형식의 참조로 저장됩니다.

소스 커밋이 저장소에 없는 경우 커밋 메시지에 SHA가 포함된 커밋이 대신 사용됩니다.

가져오기 기간 추정#

Bitbucket Server에서의 모든 가져오기는 다르며, 이는 수행하는 가져오기의 기간에 영향을 미칩니다. 그러나 가져오기 기간을 추정하는 데 도움을 주기 위해, 다음 데이터로 구성된 프로젝트는 가져오는 데 약 8시간이 걸릴 수 있습니다:

  • 13,000개의 풀 리퀘스트
  • 7,000개의 태그
  • 500 GiB 저장소

전제 조건#

  • Bitbucket Server는 GitLab 인스턴스에서 액세스할 수 있어야 합니다. Bitbucket Server URL은 공개적으로 확인 가능하거나 GitLab이 실행되는 네트워크에서 액세스할 수 있어야 합니다.
  • Bitbucket Server 가져오기 소스를 활성화하거나 GitLab 관리자에게 활성화를 요청해야 합니다. GitLab.com에서 기본적으로 활성화됩니다.
  • 가져올 대상 그룹에 Maintainer 또는 소유자 역할.
  • 관리자 액세스 권한이 있는 Bitbucket Server 인증 토큰. 관리자 액세스 없이는 일부 데이터가 가져오지 않습니다.

Bitbucket Server 저장소 가져오기#

Bitbucket Server 저장소를 가져오려면:

  1. GitLab에 로그인합니다.
  2. 오른쪽 상단에서 새로 만들기 (+)를 선택하고 새 프로젝트/저장소를 선택합니다.
  3. 프로젝트 가져오기를 선택합니다.
  4. Bitbucket Server를 선택합니다.
  5. Bitbucket에 로그인하고 GitLab에 Bitbucket 계정 액세스 권한을 부여합니다.
  6. 가져올 프로젝트를 선택하거나 모든 프로젝트를 가져옵니다. 이름으로 프로젝트를 필터링하고 각 프로젝트를 가져올 네임스페이스를 선택할 수 있습니다.
  7. 프로젝트를 가져오려면:
    • 처음에는 가져오기를 선택합니다.
    • 이후에는 다시 가져오기를 선택합니다. 새 이름을 지정하고 다시 가져오기를 다시 선택합니다. 다시 가져오기는 소스 프로젝트의 새 복사본을 만듭니다.

대안적인 매핑 방법#

가져오기에 대한 대안적인 사용자 기여 매핑 방법을 사용하기 위해 bitbucket_server_user_mapping 기능 플래그를 비활성화할 수 있습니다.

GitLab.com으로 가져오기의 경우 대신 마이그레이션 후 방법을 사용해야 합니다.

Feature flag

이 기능의 가용성은 기능 플래그로 제어됩니다. 이 기능은 권장되지 않으며 GitLab.com으로의 마이그레이션에서는 사용할 수 없습니다. 이 매핑 방법에서 발견된 문제는 수정될 가능성이 없습니다. 이러한 제한이 없는 마이그레이션 후 방법을 대신 사용하십시오.

자세한 내용은 이슈 512213을 참조하십시오.

대안적인 방법을 사용하면 가져오기 도구는 Bitbucket Server 사용자의 이메일 주소를 GitLab 사용자 데이터베이스의 확인된 이메일 주소와 매핑하려고 합니다. 사용자를 찾지 못하면:

  • 프로젝트 생성자가 대신 사용됩니다. 가져오기 도구는 댓글에 원래 생성자를 표시하는 노트를 추가합니다.
  • 풀 리퀘스트 검토자의 경우 검토자가 할당되지 않습니다.
  • 풀 리퀘스트 승인자의 경우 승인이 추가되지 않습니다.

풀 리퀘스트 설명 및 노트의 멘션은 사용자의 이메일 주소를 사용하여 Bitbucket Server의 사용자 프로필에 매핑됩니다. 같은 이메일 주소를 가진 사용자가 GitLab에서 찾을 수 없는 경우 멘션은 정적으로 만들어집니다. 사용자가 매핑되려면 프로젝트에 대한 읽기 액세스 이상을 제공하는 GitLab 역할이 있어야 합니다.

프로젝트가 공개인 경우 GitLab은 프로젝트에 초대된 사용자만 매핑합니다.

가져오기 도구는 존재하지 않는 경우 새 네임스페이스(그룹)를 만듭니다. 네임스페이스가 이미 사용 중인 경우 저장소는 가져오기 프로세스를 시작한 사용자의 네임스페이스 아래에 가져옵니다.

문제 해결#

다음 섹션에는 발생할 수 있는 문제에 대한 해결책이 포함되어 있습니다.

일반#

GUI 기반 가져오기 도구가 작동하지 않는 경우 다음을 시도해 볼 수 있습니다:

Bitbucket Cloud의 문제 해결 섹션을 참조하십시오.

LFS 오브젝트가 가져오지 않음#

프로젝트 가져오기는 완료되었지만 LFS 오브젝트를 다운로드하거나 복제할 수 없는 경우 특수 문자가 포함된 비밀번호 또는 개인 액세스 토큰을 사용하고 있을 수 있습니다. 자세한 내용은 이슈 337769를 참조하십시오.

유효하지 않거나 확인할 수 없는 호스트 주소로 인한 가져오기 실패 또는 가져오기 URL 차단#

초기 Bitbucket 서버 연결에 성공했음에도 불구하고 Importing the project failed: Import URL is blocked와 같은 오류 메시지와 함께 프로젝트 가져오기가 실패하면 Bitbucket 서버 또는 역방향 프록시가 올바르게 구성되지 않았을 수 있습니다.

이 문제를 해결하려면 Projects API를 사용하여 새로 만든 프로젝트를 확인하고 프로젝트의 import_url 값을 찾습니다.

이 값은 가져오기에 사용할 Bitbucket 서버가 제공한 URL을 나타냅니다. 이 URL이 공개적으로 확인할 수 없는 경우 확인 불가 주소 오류가 발생할 수 있습니다.

이 문제를 해결하려면 Bitbucket 서버가 프록시 서버를 인식하도록 해야 합니다. 프록시 서버가 Bitbucket이 URL을 구성하고 사용하는 방법에 영향을 줄 수 있기 때문입니다. 자세한 내용은 Bitbucket 프록시 및 보안을 참조하십시오.

JSON::NestingError로 인한 가져오기 실패#

JSON::NestingError가 포함된 오류 메시지와 함께 프로젝트 가져오기가 실패하면 Bitbucket Server 응답이 max_http_response_json_depth 설정을 초과하는 깊이 중첩된 오브젝트를 포함합니다.

이 문제를 해결하려면 아웃바운드 요청에서 JSON HTTP 응답의 최대 허용 중첩 깊이를 늘립니다.

관련 주제#