기존에 SVN을 사용하다 최근 사내 모든 형상관리를 GitHub으로 이전했다. 다른 팀에서 이 작업을 진행하다 보니 크게 신경쓰지 못했다.
분명 SVN에서 GitHub으로 이전하니, 이전되는 SVN의 프로젝트(폴더)를 확인하고 문제 이상 있으면 말하라고 공지까지 됐었는데 DeadLine이 있는 작업들을 하다 보니 별일 있겠어...? 하고 넘어갔었다...
SVN에서는 제품 버전별로 폴더들이 있고, 그 아래에 고객사별로 소스가 존재했다.
ROOT
--V.1
--고객사A
...
--v.2
--고객사B
--고객사C
--고객사D
...
이런 구조로 되어있다 보니, GitHub으로 이전하게 되면 고객사 소스별로 Repository가 구성되어야 했다. 하지만,,,
GitHub으로 이전되면서 이런 구조로 이전 되었다.
V.1 Repository
--고객사A
...
V.2 Repository
--고객사B
--고객사C
--고객사D
...
이렇게 구조가 만들어지면서, V.2 버전의 고객사 중 하나를 수정했을 때 V.2 Repository에 Commit 내용이 생겼을 것이다.
이러한 문제들이 발생하기 전에 Repository를 분리하여 해결이 필요했다.
subtree 명령어로 Repository를 분리 할 수 있었다.
git subtree split -P <분리할 하위 폴더> -b <새로운 브랜치 이름>
git init
git pull <기존 프로젝트 폴더 위치> <생성한 브랜치 이름>
git remote add origin <분리한 리포지토리 주소>
git branch -M main
git push -u origin main
이렇게 Repository를 고객사 별로 분리 할 수 있었고, 다른 고객사들의 Commit 내용이 겹치는 불상사를 막을 수 있었다.