Git 저장소 이관 하는 법
사내 git 저장소에서 bitbucket 클라우드 저장소로 이관하는 법에 대한 설명
![Git 저장소 이관 하는 법](/content/images/size/w2000/2022/06/2022-06-15------6.11.15.jpg)
사내 NAS에 설치되어있는 Gitlab 에서 저장소를 Bitbucket 로 이관해야 할 일이 생겼다. Gitlab이 생각보다 무거워서 가끔가다가 다운되는 현상이 발생했다. 인프라 담당자와 얘기해서 Gitlab서버를 NAS에서 내리기로 결정했다. (NAS는 파일공유 용도로만 사용하는 걸로 했다.)
Gitlab
![](https://birdspring.com/content/images/2022/06/-----------2022-06-15------5.27.35.png)
4페이지에 달하는 저장소가 있는데 담당자들이 모두 달라서 어떤 저장소를 이관해야하는지 이관한후에 Gitlab서버를 내리면 문제가 있는 저장소인지 알 수가 없어서 먼저 개발자 전체에 저장소 담당자와 연관 서비스가 있는지 확인해달라고 메일을 보냈다. 정리는 컨플루언스에서 진행하기 위해서 Gitlab에 있는 전체 저장소 목록으로 표를 만들어서 공유했다.
![](https://birdspring.com/content/images/2022/06/-----------2022-06-15------5.49.04.png)
컨플루언스에 위와 같이 정리하면 화이트보드처럼 동시에 여러 사람들이 접근해서 같이 수정이 가능하다.
git 저장소 주소를 정리해놔야 나중에 작업할 때 빠르다.
Bitbucket
사내에서 지라와 컨플루언스, 슬랙을 사용하고 있는데 그중에 지라와 컨플루언스는 아틀라시안 제품이다. 그래서 비트버킷을 선택했는데 지라와 연동되서 지라 이슈에서 브랜치를 바로 생성한다던가 하는 이점이 있어서 괜찮은 선택인 것 같다.
![](https://birdspring.com/content/images/2022/06/-----------2022-06-15------5.58.01.png)
비트버킷에서도 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서버가 내려갈때마다 개발자들의 작업이 끊기고 운영에도 반영하지 못하던 상황이 없어질 것으로 기대된다.