Bitbucket Server에서 프로젝트 가져오기
Bitbucket Server에서 GitLab로 프로젝트를 가져옵니다.
이 불가능성은 Bitbucket Cloud에서의 가져오기에는 영향을 미치지 않습니다.
전제 조건
- GitLab 16.0에서 도입된 Maintainer 역할의 요구 사항, GitLab 15.11.1 및 GitLab 15.10.5로 이전됨.
-
Bitbucket Server 가져오기 소스
를 활성화해야 합니다. 활성화되지 않은 경우 GitLab 관리자에게 활성화를 요청하십시오. Bitbucket Server 가져오기 소스는 GitLab.com에서 기본적으로 활성화됩니다. - 대상 그룹에서 가져오기 위해 최소한 Maintainer 역할이 필요합니다.
- 관리者 액세스 권한이 있는 Bitbucket Server 인증 토큰. 관리자 액세스가 없으면 일부 데이터가
가져오지 않습니다.
리포지토리 가져오기
Bitbucket 리포지토리를 가져오려면:
- GitLab에 로그인합니다.
- 왼쪽 사이드바에서 상단의 새로 만들기() 및 새 프로젝트/리포지토리를 선택합니다.
- 프로젝트 가져오기를 선택합니다.
- Bitbucket Server를 선택합니다.
- Bitbucket에 로그인하고 GitLab에 Bitbucket 계정에 대한 액세스를 부여합니다.
- 가져올 프로젝트를 선택하거나 모든 프로젝트를 가져옵니다. 이름으로 프로젝트를 필터링하고 각 프로젝트를 가져올 네임스페이스를 선택할 수 있습니다.
- 프로젝트를 가져오려면:
- 처음: 가져오기를 선택합니다.
- 다시: 재가져오기를 선택합니다. 새 이름을 지정하고 다시 재가져오기를 선택합니다. 재가져오기는 원본 프로젝트의 새 복사본을 생성합니다.
가져온 항목
- 리포지토리 설명
- Git 리포지토리 데이터
- Pull 요청, 댓글, 사용자 멘션, 리뷰어 및 병합 이벤트
- LFS 객체
가져올 때:
- 리포지토리의 공개 액세스는 유지됩니다. Bitbucket에서 리포지토리가 비공개인 경우 GitLab에서도 비공식으로 생성됩니다.
- 가져온 병합 요청 및 댓글에는 GitLab에서 Imported 배지가 있습니다.
닫힌 또는 병합된 Pull 요청이 가져올 경우, 리포지토리에 존재하지 않는 커밋 SHA는 Bitbucket 서버에서 가져와 Pull 요청에 커밋이 연결되도록 합니다:
- 소스 커밋 SHA는
refs/merge-requests/<iid>/head
형식으로 참조와 함께 저장됩니다. - 대상 커밋 SHA는
refs/keep-around/<SHA>
형식으로 참조와 함께 저장됩니다.
소스 커밋이 리포지토리에 존재하지 않는 경우, 커밋 메시지에 SHA를 포함한 커밋이 대신 사용됩니다.
가져오지 않는 항목
다음 항목은 가져오지 않습니다:
- Markdown의 첨부파일
- 작업 목록
- 이모지 반응
- Pull request 승인
- Pull request 승인 규칙
가져오지만 변경된 항목
가져올 때 다음 항목이 변경됩니다:
- GitLab은 임의의 코드 줄에 대한 댓글을 허용하지 않습니다. 범위를 벗어난 Bitbucket 댓글은 병합 요청의 댓글로 삽입됩니다.
- 여러 스레드 수준이 하나의 스레드로 축소되고 인용이 원래 댓글의 일부로 추가됩니다.
- 프로젝트 필터링은 퍼지 검색을 지원하지 않습니다. 시작 문자열 또는 완전 일치 문자열만 지원됩니다.
사용자 할당
셀프 관리 GitLab에서는 GitLab 사용자와의 사용자 언급 일치가 제공되지 않습니다. 사용자가 이용할 수 있도록 하려면,
관리자가
bitbucket_server_import_stage_import_users
라는 기능 플래그를 활성화할 수 있습니다.GitLab.com 및 GitLab Dedicated에서는 이 기능을 사용할 수 없습니다.
문제와 Pull request를 가져오는 동안, 가져오기 도구는 Bitbucket Server 사용자 이메일 주소를
GitLab 사용자 데이터베이스의 확인된 이메일 주소와 일치시키려고 시도합니다. 그런 사용자를 찾을 수 없는 경우:
- 프로젝트 생성자가 대신 사용됩니다. 가져오기 도구는 원래 생성자를 표시하기 위해 댓글에 주석을 추가합니다.
- Pull request 리뷰어에게는 리뷰어가 할당되지 않습니다.
- Pull request 승인자에게는 승인이 추가되지 않습니다.
Pull request 설명 및 주석의 @mentions
는 사용자의 이메일 주소를 사용하여
Bitbucket Server의 사용자 프로필에 일치합니다. GitLab에서 같은 이메일 주소를 가진 사용자를 찾을 수 없는 경우, @mention
은 정적으로 설정됩니다.
사용자가 일치하려면, 그들은 프로젝트에 대한 최소한의 읽기 액세스를 제공하는 GitLab 역할이 있어야 합니다.
프로젝트가 공개인 경우, GitLab은 초대된 사용자만 일치시킵니다.
가져오기 도구는 존재하지 않는 경우 새로운 네임스페이스(그룹)를 생성합니다.
네임스페이스가 이미 사용 중인 경우,
저장소는 가져오기 프로세스를 시작한 사용자의 네임스페이스 아래에서 가져옵니다.
사용자 이름에 의한 사용자 할당
- 운영 환경 사용은 권장하지 않습니다.
셀프 관리 GitLab 및 GitLab.com에서는 기본적으로 이 기능을 사용할 수 없습니다. 사용 가능하게 하려면,
관리자가
bitbucket_server_user_mapping_by_username
라는 기능 플래그를 활성화할 수 있습니다. 이 기능은 아직 운영 환경 사용에 적합하지 않습니다.이 기능이 활성화되면, 사용자 이메일 주소 일치가 비활성화됩니다.
대신, 가져오기 도구는 GitLab 사용자 데이터베이스에서 Bitbucket Server 사용자의:
username
slug
displayName
와 일치시킵니다.
문제 해결
일반
GUI 기반 가져오기 도구가 작동하지 않으면, 다음을 시도해 볼 수 있습니다:
-
GitLab Import API
Bitbucket Server 엔드포인트를 사용합니다. -
저장소 미러링을 설정합니다.
자세한 오류 출력을 제공합니다.
문제 해결 섹션을 참조하여 Bitbucket Cloud에 대해 알아보세요.
LFS 객체가 가져오지 않음
프로젝트 가져오기가 완료되었지만 LFS 객체를 다운로드하거나 복제할 수 없는 경우, 특수 문자가 포함된 비밀번호 또는 개인 액세스 토큰을 사용하고 있을 수 있습니다. 자세한 내용은 이 문제를 참조하세요.
잘못된/해결되지 않은 호스트 주소로 인해 가져오기가 실패하거나 가져오기 URL이 차단됨
프로젝트 가져오기가 Importing the project failed: Import url is blocked
와 같은 오류 메시지와 함께 실패하는 경우, Bitbucket 서버에 대한 초기 연결은 성공했지만, Bitbucket 서버 또는 리버스 프록시가 올바르게 구성되지 않았을 수 있습니다.
이 문제를 해결하려면 Projects API를 사용하여 새로 생성된 프로젝트를 확인하고 프로젝트의 import_url
값을 찾으세요.
이 값은 가져오기 위해 Bitbucket 서버에서 제공하는 URL을 나타냅니다. 만약 이 URL이 공개적으로 해결할 수 없는 경우, 해결할 수 없는 주소 오류가 발생할 수 있습니다.
이 문제를 해결하려면 Bitbucket 서버가 모든 프록시 서버를 인지하고 있는지 확인하세요. 프록시 서버는 Bitbucket이 URL을 구성하고 사용하는 방식에 영향을 줄 수 있습니다.
자세한 내용은 Atlassian의 문서를 참조하세요.