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

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • GitLab 15.9에서 도입된 프로젝트 다시 가져오기 기능입니다. 소개됨.
  • GitLab 16.3에서 도입된 리뷰어 가져오기 기능입니다. 소개됨.
  • GitLab 16.7에서 도입된 Pull Request 승인 가져오기 지원입니다. 소개됨.

Bitbucket Server에서 프로젝트를 GitLab로 가져오세요.

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

필수 컴포넌트

  • GitLab 16.0에서 도입된 Maintainer 역할 요구사항으로, Developer 역할 대신에 도입되었고, GitLab 15.11.1과 GitLab 15.10.5로 배포되었습니다.
  • Bitbucket Server 가져오기 소스 는 활성화되어 있어야 합니다. 활성화되어 있지 않다면, GitLab 관리자에게 활성화 요청을 하세요. Bitbucket Server 가져오기 소스는 GitLab.com에서 기본적으로 활성화되어 있습니다.
  • 가져올 대상 그룹에서 적어도 Maintainer 역할이 있어야 합니다.
  • 관리자 액세스 권한이 있는 Bitbucket Server 인증 토큰이 필요합니다.

리포지터리 가져오기

Bitbucket 리포지터리를 가져오려면:

  1. GitLab에 로그인합니다.
  2. 왼쪽 사이드바 상단에서 새로 만들기 () 및 새 프로젝트/리포지터리를 선택합니다.
  3. 프로젝트 가져오기를 선택합니다.
  4. Bitbucket Server를 선택합니다.
  5. Bitbucket에 로그인하고 GitLab이 Bitbucket 계정에 액세스할 수 있도록 허용합니다.
  6. 가져올 프로젝트를 선택하거나 모든 프로젝트를 가져올 수 있습니다. 프로젝트를 이름별로 필터링하여 각 프로젝트를 가져올 네임스페이스를 선택할 수 있습니다.
  7. 프로젝트를 가져오려면:
    • 처음 가져오는 경우: 가져오기를 선택합니다.
    • 다시 가져오는 경우: 다시 가져오기를 선택합니다. 새 이름을 지정하고 다시 다시 가져오기를 선택합니다. 다시 가져오기는 원본 프로젝트의 새 복사본을 생성합니다.

가져오는 항목

  • 리포지터리 설명
  • Git 리포지터리 데이터
  • Pull 요청
  • Pull 요청 코멘트, 사용자 언급, 리뷰어, 승인 및 Merge 이벤트
  • LFS 개체

가져올 때, 리포지터리 공개 액세스가 유지됩니다. Bitbucket에서 리포지터리가 비공개인 경우 GitLab에서도 비공개로 생성됩니다.

닫히거나 Merge된 Pull 요청이 가져오는 경우, 리포지터리에 없는 커밋 SHA는 Bitbucket 서버에서 가져옵니다. 이를 통해 Pull 요청에 커밋이 연결됩니다:

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

원본 커밋이 리포지터리에 없는 경우, 커밋 메시지에 SHA를 포함한 커밋이 대신 사용됩니다.

가져오지 않는 항목

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

  • 마크다운에 첨부된 첨부 파일
  • 작업 디렉터리
  • 이모지 반응

가져오되 변경된 항목

다음 항목은 가져오는 경우 변경됩니다:

  • GitLab은 임의의 코드 라인에 코멘트를 허용하지 않습니다. 범위를 벗어난 Bitbucket 코멘트는 Merge Request의 코멘트로 삽입됩니다.
  • 복수의 스레드 레벨은 하나의 스레드로 합쳐지고 원래 코멘트의 일부로 따옴표가 추가됩니다.
  • 프로젝트 필터링은 퍼지 검색을 지원하지 않습니다. 시작하는 것 또는 전체 일치 문자열만 지원됩니다.

사용자 할당

  • 이메일 주소 또는 사용자 이름으로 승인을 가져오는 것이 GitLab 16.7에서 도입되었습니다.
  • GitLab 사용자와 사용자 언급을 일치시키는 것이 GitLab 16.8에서 도입되었습니다.
Self-managed GitLab에서는 GitLab 사용자와 사용자 언급을 일치시키지 않습니다. 사용자 당 사용할 수 있도록 만들려면, 관리자가 bitbucket_server_import_stage_import_users라는 특성 플래그를 활성화할 수 있습니다. GitLab.com 및 GitLab Dedicated에서는 이 기능을 사용할 수 없습니다.

이슈 및 Pull 요청이 가져올 때, 가져오기자는 GitLab 사용자 데이터베이스에서 확인된 이메일 주소를 가진 작성자를 찾습니다. 이러한 사용자가 없으면 프로젝트 생성자가 작성자로 설정됩니다. 또한 가져오기자는 원래 생성자를 표시하는 코멘트를 추가합니다.

Pull 요청 설명 및 코멘트에서의 @언급은 사용자의 이메일 주소를 사용하여 Bitbucket Server의 사용자 프로필과 일치시킵니다. GitLab에서 동일한 이메일 주소를 가진 사용자를 찾을 수 없는 경우, @언급은 정적으로 생성됩니다. 사용자를 일치시키기 위해 해당 사용자는 프로젝트에 적어도 읽기 액세스를 제공하는 GitLab 역할을 가져야 합니다.

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

가져오기자는 새로운 네임스페이스(그룹)를 만들어야 하는 경우에 만듭니다. 네임스페이스가 사용 중이라면, 리포지터리는 가져오기 프로세스를 시작한 사용자의 네임스페이스에서 가져옵니다.

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

  • 이메일 주소를 사용하여 GitLab 사용자 데이터베이스에서 리뷰어를 찾습니다. 그들이 GitLab에 없으면, Merge Request에 리뷰어로 추가되지 않습니다.
  • 사용자 이름 또는 이메일 주소로 승인자를 찾습니다. 그들이 GitLab에 없으면, 승인이 Merge Request에 추가되지 않습니다.

사용자 할당: 사용자 이름별

  • GitLab 13.4에서 특성 플래그 bitbucket_server_user_mapping_by_username와 함께 도입되었습니다. 기본적으로 비활성화됩니다.
  • 프로덕션 환경에서 사용을 권장하지 않습니다.
Self-managed GitLab 및 GitLab.com에서는 기본적으로 이 기능을 사용할 수 없습니다. 사용하려면, 관리자가 bitbucket_server_user_mapping_by_username이라는 특성 플래그를 활성화할 수 있습니다. 이 기능은 프로덕션 환경에 준비되지 않았습니다.

이 기능을 활성화하면, 가져오기자는 GitLab 사용자 데이터베이스에서 사용자를 찾으려고 하며, 그 사용자의:

  • 사용자 이름
  • slug
  • displayName

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

문제 해결

일반

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

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

LFS 객체 가져오기 실패

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

잘못된/해결되지 않은 호스트 주소 또는 가져오기 URL이 차단된 경우 가져오기 실패

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

이 문제를 해결하려면 프로젝트 API를 사용하여 새로 생성된 프로젝트를 확인하고, 프로젝트의 import_url 값의 위치를 찾으세요.

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

이 문제를 해결하려면, Bitbucket 서버가 프록시 서버를 인식하고 있는지 확인하세요. 프록시 서버는 Bitbucket이 URL을 구성하고 사용하는 방식에 영향을 줄 수 있습니다. 자세한 정보는 Atlassian의 문서를 참조하세요.