Bitbucket 서버에서 프로젝트 가져오기

Tier: Free, Premium, Ultimate Offering: GitLab.com, 자체 관리, GitLab Dedicated
  • GitLab 15.9에서 도입된 프로젝트 재가져오기 기능
  • GitLab 16.3에서 도입된 리뷰어 가져오기 기능
  • GitLab 16.7에서 도입된 pull request 승인 가져오기 지원

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

참고: 이 프로세스는 Bitbucket Cloud에서 가져오는 것과 다릅니다.

준비 사항

  • GitLab 16.0에 도입되었으며 GitLab 15.11.1 및 GitLab 15.10.5로 백포팅된 개발자 역할 대신 메인테이너 역할이 필요합니다.
  • Bitbucket Server 가져오기 원본 은 활성화되어 있어야 합니다. 비활성화된 경우 GitLab 관리자에게 활성화하도록 요청하십시오. Bitbucket Server 가져오기 원본은 GitLab.com에서 기본적으로 활성화되어 있습니다.
  • 가져오기할 대상 그룹에 대한 적어도 메인테이너 역할이 필요합니다.
  • 관리자 액세스 권한이 있는 Bitbucket Server 인증 토큰이 필요합니다.

저장소 가져오기

Bitbucket 저장소를 가져오려면:

  1. GitLab에 로그인합니다.
  2. 왼쪽 사이드바 상단에서 새 프로젝트/저장소 생성을 선택합니다.
  3. 프로젝트 가져오기를 선택합니다.
  4. Bitbucket Server를 선택합니다.
  5. Bitbucket에 로그인하고 GitLab에 Bitbucket 계정 액세스를 부여합니다.
  6. 가져올 프로젝트를 선택하거나 모든 프로젝트를 가져올 수 있습니다. 프로젝트를 이름별로 필터링하고 각 프로젝트를 가져올 네임스페이스를 선택할 수 있습니다.
  7. 프로젝트를 가져오려면:
    • 첫 번째로: 가져오기를 선택합니다.
    • 다시: 재가져오기를 선택합니다. 새 이름을 지정하고 다시 재가져오기를 선택합니다. 재가져오기는 소스 프로젝트의 새 복사본을 생성합니다.

가져오는 항목들

  • 저장소 설명
  • Git 저장소 데이터
  • Pull request
  • Pull request 코멘트, 사용자 언급, 리뷰어, 승인 및 병합 이벤트
  • LFS 객체

가져올 때, 저장소 공개 액세스는 유지됩니다. 만약 Bitbucket에서 저장소가 비공개이면, GitLab에서도 비공개로 생성됩니다.

닫히거나 병합된 pull request가 가져오될 때, 저장소에 존재하지 않는 커밋 SHA는 Bitbucket 서버에서 가져와 pull request가 해당하는 커밋을 가지도록 합니다:

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

만약 소스 커밋이 저장소에 존재하지 않는 경우, 커밋 메시지에 SHA를 포함한 커밋이 대신 사용됩니다.

가져오지 않는 항목들

다음 항목들은 가져오지 않습니다:

  • 마크다운의 첨부 파일
  • 작업 목록
  • 이모지 반응들

가져와지만 변경된 항목들

다음 항목들은 가져오면 변경됩니다:

  • GitLab은 코드의 임의 라인에 코멘트를 허용하지 않습니다. 코드 밖 영역에 있는 Bitbucket 코멘트는 병합 요청의 코멘트로 삽입됩니다.
  • 다중 스레드 수준은 하나의 스레드로 축소되고 따옴표는 원래 코멘트의 일부로 추가됩니다.
  • 프로젝트 필터링은 fuzzy 검색을 지원하지 않습니다. 시작 부분은 또는 완전 일치 문자열만 지원됩니다.

사용자 할당

자체 관리 GitLab에서는 사용자 언급을 GitLab 사용자와 일치시키는 기능이 사용할 수 없습니다. 사용자 당 사용할 수 있도록 관리자는 bitbucket_server_import_stage_import_users이름의 기능 플래그를 활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated에서는 이 기능을 사용할 수 없습니다.

이슈 및 pull request가 가져오는 경우, 가져오기기는 저자의 이메일 주소를 GitLab 사용자 데이터베이스에서 확인된 이메일 주소와 일치시키려고 시도합니다. 그런 사용자가 없는 경우, 프로젝트 생성자가 저자로 설정됩니다. 가져오기 앱은 원래 생성자를 표시하기 위해 코멘트에 노트를 추가합니다.

pull request 설명과 코멘트에 있는 @mentions는 사용자의 이메일 주소를 사용하여 Bitbucket Server의 사용자 프로필과 일치시킵니다. 동일한 이메일 주소의 사용자를 GitLab에서 찾을 수 없는 경우 @mention는 정적으로 생성됩니다. 사용자가 일치시키려면 해당 사용자는 프로젝트에 적어도 읽기 액세스 권한을 제공하는 GitLab 역할이 있어야 합니다.

프로젝트가 공개 상태인 경우, GitLab은 프로젝트로 초대된 사용자들만 일치시킵니다.

가져오기는 새 네임스페이스(그룹)를 생성하려고 시도합니다. 네임스페이스가 사용중이면 저장소가 가져오임은 가져오기 프로세스를 시작한 사용자의 네임스페이스에 저장됩니다.

가져오기기는 다음을 찾으려고 시도합니다:

  • 이메일 주소를 통해 리뷰어를 GitLab 사용자 데이터베이스에서 찾습니다. GitLab에 존재하지 않는 경우, 병합 요청에 리뷰어로 추가되지 않습니다.
  • 사용자 이름 또는 이메일로 승인자를 찾습니다. GitLab에 존재하지 않는 경우, 승인은 병합 요청에 추가되지 않습니다.

사용자 할당 (User assignment) by username

플래그: 자체 관리 GitLab 및 GitLab.com에서 기본적으로 이 기능을 사용할 수 없습니다. 이를 사용하도록 설정하려면 관리자가 bitbucket_server_user_mapping_by_username이라는 기능 플래그를 활성화할 수 있습니다. 이 기능은 아직 프로덕션 환경에 준비되지 않았습니다.

이 기능이 활성화된 경우, 임포터는 다음과 같은 작성자의 GitLab 사용자 데이터베이스에서 사용자를 찾습니다:

  • username
  • slug
  • displayName

이러한 속성과 일치하는 사용자가 없는 경우, 프로젝트 생성자가 작성자로 설정됩니다.

문제 해결

일반

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

Bitbucket Cloud에 대한 문제 해결 섹션은 여기를 참조하세요.

LFS 오브젝트를 가져오지 못하는 경우

프로젝트 가져오기가 완료되었지만 LFS(Large File Storage) 객체를 다운로드하거나 복제할 수 없는 경우, 특수 문자가 포함된 암호 또는 개인 액세스 토큰을 사용하고 있을 수 있습니다. 자세한 내용은 이 이슈를 참조하세요.

유효하지 않거나 해결되지 않은 호스트 주소로 인해 가져오기가 실패하거나 가져오기 URL이 차단된 경우

프로젝트 가져오기가 프로젝트 가져오기가 실패함: 가져오기 URL이 차단됨과 같은 오류 메시지와 함께 실패하는 경우, 초기적인 Bitbucket 서버와의 연결에도 불구하고 Bitbucket 서버나 역방향 프록시가 올바르게 구성되지 않았을 수 있습니다.

이 문제를 해결하기 위해 프로젝트 API를 사용하여 새롭게 생성된 프로젝트를 확인하고 프로젝트의 import_url 값을 찾으세요.

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

이 문제를 해결하려면 Bitbucket 서버가 프록시 서버를 인식하도록 하여 프록시 서버가 Bitbucket의 URL을 어떻게 구성하고 사용하는지에 영향을 줄 수 있도록 하세요. 자세한 내용은 Atlassian의 문서를 참조하세요.