Bitbucket Server에서 마이그레이션
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의 첨부 파일 | ❌ |
| 작업 목록 | ❌ |
| 이모지 반응 | ❌ |
| 풀 리퀘스트 승인 | ❌ |
| 풀 리퀘스트 승인 규칙 | ❌ |
각주:
- GitLab은 임의의 코드 줄에 댓글을 허용하지 않습니다. 범위를 벗어난 Bitbucket 댓글은 MR에 댓글로 삽입됩니다.
- 여러 스레딩 레벨은 하나의 스레드로 축소되고 인용은 원래 댓글의 일부로 추가됩니다.
- 프로젝트 필터링은 퍼지 검색을 지원하지 않습니다. 시작하는 문자 또는 전체 일치 문자열만 지원됩니다.
가져오기 도구 워크플로#
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 저장소를 가져오려면:
- GitLab에 로그인합니다.
- 오른쪽 상단에서 새로 만들기 (+)를 선택하고 새 프로젝트/저장소를 선택합니다.
- 프로젝트 가져오기를 선택합니다.
- Bitbucket Server를 선택합니다.
- Bitbucket에 로그인하고 GitLab에 Bitbucket 계정 액세스 권한을 부여합니다.
- 가져올 프로젝트를 선택하거나 모든 프로젝트를 가져옵니다. 이름으로 프로젝트를 필터링하고 각 프로젝트를 가져올 네임스페이스를 선택할 수 있습니다.
- 프로젝트를 가져오려면:
- 처음에는 가져오기를 선택합니다.
- 이후에는 다시 가져오기를 선택합니다. 새 이름을 지정하고 다시 가져오기를 다시 선택합니다. 다시 가져오기는 소스 프로젝트의 새 복사본을 만듭니다.
대안적인 매핑 방법#
가져오기에 대한 대안적인 사용자 기여 매핑 방법을 사용하기 위해 bitbucket_server_user_mapping 기능 플래그를 비활성화할 수 있습니다.
GitLab.com으로 가져오기의 경우 대신 마이그레이션 후 방법을 사용해야 합니다.
이 기능의 가용성은 기능 플래그로 제어됩니다. 이 기능은 권장되지 않으며 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 응답의 최대 허용 중첩 깊이를 늘립니다.
