Git 저장소 이관 하는 법
사내 NAS에 설치되어있는 Gitlab 에서 저장소를 Bitbucket 로 이관해야 할 일이 생겼다. Gitlab이 생각보다 무거워서 가끔가다가 다운되는 현상이 발생했다. 인프라 담당자와 얘기해서 Gitlab서버를 NAS에서 내리기로 결정했다. (NAS는 파일공유 용도로만 사용하는 걸로 했다.)
Gitlab
4페이지에 달하는 저장소가 있는데 담당자들이 모두 달라서 어떤 저장소를 이관해야하는지 이관한후에 Gitlab서버를 내리면 문제가 있는 저장소인지 알 수가 없어서 먼저 개발자 전체에 저장소 담당자와 연관 서비스가 있는지 확인해달라고 메일을 보냈다. 정리는 컨플루언스에서 진행하기 위해서 Gitlab에 있는 전체 저장소 목록으로 표를 만들어서 공유했다.
컨플루언스에 위와 같이 정리하면 화이트보드처럼 동시에 여러 사람들이 접근해서 같이 수정이 가능하다.
git 저장소 주소를 정리해놔야 나중에 작업할 때 빠르다.
Bitbucket
사내에서 지라와 컨플루언스, 슬랙을 사용하고 있는데 그중에 지라와 컨플루언스는 아틀라시안 제품이다. 그래서 비트버킷을 선택했는데 지라와 연동되서 지라 이슈에서 브랜치를 바로 생성한다던가 하는 이점이 있어서 괜찮은 선택인 것 같다.
비트버킷에서도 gitlab의 저장소와 일대일 대응될 수 있게 저장소를 미리 만들어서 정리해 놓는다.
이관실행
맥기준으로 설명하면, 백업(backup)폴더를 생성하고 아래 작업을 반복 수행한다.
- gitlab 클론
- 모든 브랜치 pull
- 리모트 저장소로 bitbucket 경로 등록
- 모든 브랜치 push
- 반복
명령어는 아래와 같다.
git clone <gitlab 저장소 path>
cd <생성된 폴더>
git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote"; done
git remote add bitbucket <bitbucket 저장소 path>
git push bitbucket --all
저장소 숫자만큼 위 명령어를 수행하면 작업은 끝난다.
후기
작업은 잘 끝났고, 각 시스템 담당자들에게 연관된 시스템의 설정등을 맞춰서 변경해달라고 요청했다. 앞으로 일주일 후에 gitlab 서버를 내리면 모든 작업이 종료된다. gitlab서버가 내려갈때마다 개발자들의 작업이 끊기고 운영에도 반영하지 못하던 상황이 없어질 것으로 기대된다.