gitlab 서로다른 레포지토리 병합 미러링

목차

  • [1. 작업배경]
  • [2. 이관 전략]
  • [3. gitlab 미러링]
  • [4. 결론]

 


1. 작업배경

내부에서 개발하고 있던 api 깃프로젝트 소스가 있었는데, 별도의 TF 프로젝트가 발생하였고 이에 따라 깃프로젝트 이중 작업이 불가피하여 TF 프로젝트용으로 api 깃프로젝트를 복제하여 새 구성을 하였습니다. 하여 내부적으로 api 깃프로젝트와 tf api 깃프로젝트가 생겨난 상황이었는데. api 깃프로젝트에서 진행된 내용이 tf api 깃프로젝트로 옮겨져야 하는 상황이 생겼습니다.

이에 기존의 api 깃프로젝트를 A프로젝트로 가칭, tf api 깃프로젝트를 B프로젝트라고 가칭하여 브랜치를 이관하여 병합 관리하는 단계를 작성해보았습니다.

 

대상 프로젝트

  • A 프로젝트 release 브랜치
  • B 프로젝트 main 브랜치

2. 이관 전략

A 프로젝트 release 브랜치를 B 프로젝트로 미러링

  • A 프로젝트의 release 브랜치를 B 프로젝트로 미러링하여 B 프로젝트에 동일한 브랜치를 생성하고 동기화

B 프로젝트에서 main 브랜치로 main-target 브랜치 생성

  • B 프로젝트의 main 브랜치로부터 main-target이라는 새 브랜치를 생성했습니다. 이 브랜치는 병합 작업의 대상 브랜치로 설정

B 프로젝트에 미러링 된 release 브랜치를 main-target 브랜치와 병합

  • B 프로젝트에 미러링된 A 프로젝트의 release 브랜치를 B 프로젝트의 main-target 브랜치와 병합

병합 된 main-target 브랜치를 검토

  • 병합이 완료된 후, main-target 브랜치의 소스 코드를 검토하고, 이 과정에서 충돌을 해결하고 병합된 코드의 정상 작동 여부를 확인

sync가 맞지 않는 소스 및 직접 처리건에 대하여 main-target 브랜치에 처리

  • 병합 후 소스 코드의 Sync가 맞지 않는 부분과 직접 처리해야 할 내용을 main-target 브랜치에서 수정 및 보완

최종 main-target 브랜치를 main 브랜치로 병합

  • 수정 및 검토가 완료된 main-target 브랜치를 B 프로젝트의 main 브랜치로 최종 병합

3. Gitlab 미러링

리포지토리 미러링

저장소 미러링을 사용하면 외부 소스와 상호 저장소를 미러링할 수 있습니다. 리포지토리 간에 분기, 태그 및 커밋을 미러링하는 데 사용할 수 있습니다. GitLab 외부의 저장소 (GitHub 소스도 가능)

GitLab의 저장소 미러링은 자동으로 업데이트됩니다. 업데이트를 수동으로 트리거할 수도 있습니다 GitLab.com 에서 최대 5분마다 한 번씩이며 자체 관리형 인스턴스에 대해 관리자가 설정한 제한이 있습니다.

GitLab에서 지원하는 저장소 미러링에는 두 가지 종류가 있습니다.
Push: GitLab 저장소를 다른 위치로 미러링합니다.
Pull: 저장소를 다른 위치에서 GitLab으로 미러링합니다. 
mirror 저장소가 업데이트되면 모든 새 분기, 태그 및 커밋이 프로젝트의 활동 피드에 대해 업데이트 됩니다.

프로젝트에 대한 개발자 이상의 액세스 권한이 있는 사용자는 다음을 강제 실행할 수도 있습니다.
보안상의 이유로 원래 저장소의 URL은 다음과 같은 사용자에게만 표시됩니다. 미러링된 프로젝트에 대한 유지 관리자 또는 소유자 권한.


4. 결과

깃랩(GitLab) 미러링 기능을 이용하여 서로 다른 레포지토리로 브랜치를 이관하고 병합하는 작업의 정리 내용입니다.

타겟 레포지토리(프로젝트)에서 병합진행시에 history 정리 및 수동 merge 작업을 해야하는 경우도 생길 수 있습니다.

 

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유