GitHub subtree로 Repository 분할

태히·2024년 3월 30일
0

SVN -> GitHub🙊...

기존에 SVN을 사용하다 최근 사내 모든 형상관리를 GitHub으로 이전했다. 다른 팀에서 이 작업을 진행하다 보니 크게 신경쓰지 못했다.
분명 SVN에서 GitHub으로 이전하니, 이전되는 SVN의 프로젝트(폴더)를 확인하고 문제 이상 있으면 말하라고 공지까지 됐었는데 DeadLine이 있는 작업들을 하다 보니 별일 있겠어...? 하고 넘어갔었다...

기존 SVN 폴더 구조

SVN에서는 제품 버전별로 폴더들이 있고, 그 아래에 고객사별로 소스가 존재했다.

ROOT
--V.1
	--고객사A
    ...
--v.2
	--고객사B
    --고객사C
	--고객사D
    ...

이런 구조로 되어있다 보니, GitHub으로 이전하게 되면 고객사 소스별로 Repository가 구성되어야 했다. 하지만,,,

GitHub Repository 구조(문제)

GitHub으로 이전되면서 이런 구조로 이전 되었다.

V.1 Repository
--고객사A
...
V.2 Repository
--고객사B
--고객사C
--고객사D
...

이렇게 구조가 만들어지면서, V.2 버전의 고객사 중 하나를 수정했을 때 V.2 Repository에 Commit 내용이 생겼을 것이다.

  • 문제
    • 고객사 별로 형상관리가 어렵게 된다.
    • V.2 Repository를 Clone 했을 때 해당 Repository의 모든 고객사를 내려받는다. 그러면 불필요한 소스들을 내려받게 되며, 내려 받는데 시간도 오래걸린다.

이러한 문제들이 발생하기 전에 Repository를 분리하여 해결이 필요했다.

git subtree로 해결😎

subtree 명령어로 Repository를 분리 할 수 있었다.

  1. 분리 할 Repository 폴더로 이동
  2. subtree
    git subtree split -P <분리할 하위 폴더> -b <새로운 브랜치 이름>
  3. 새 폴더 만들기(분리할 폴더의 루트가 됨)
  4. 해당 폴더로 이동
    git init
    git pull <기존 프로젝트 폴더 위치> <생성한 브랜치 이름>
  5. GitHub에서 새로운 Repository 생성
    git remote add origin <분리한 리포지토리 주소>
    git branch -M main
    git push -u origin main

이렇게 Repository를 고객사 별로 분리 할 수 있었고, 다른 고객사들의 Commit 내용이 겹치는 불상사를 막을 수 있었다.

profile
하고싶은게 많은 개발자가 되고싶은

0개의 댓글