EveryDay.DevUp

[Unity] 버전 관리, 형상 관리 ( SVN, GIT ) - 비교 본문

R&D

[Unity] 버전 관리, 형상 관리 ( SVN, GIT ) - 비교

EveryDay.DevUp 2020. 6. 6. 23:23

 

 

git과 svn의 개념을 이해하고자 한다면 하단의 게시물을 참조하면 된다.

https://everyday-devup.tistory.com/71

[Unity] 버전 관리, 형상 관리 ( SVN, GIT ) - 개념

● 버전 관리, 형상 관리 : 버전 관리나 형상 관리나 사실 상 같은 말이다. 작업물을 최신 버전과 이전 버전들을 가지고 있어서 어떤 상황에서도 언제든 원하는 상태로 돌릴 수 있도록 하는 것�

everyday-devup.tistory.com

● SVN vs GIT

 

 

: SVN과 GIT 모두 파일의 관리를 위한 툴이기 때문에 근본적인 기능은 동일하지만, 어떻게 관리하는지에 대해서는 차이가 있다. 사용 방법은 Google 검색 또는 책을 보면서 충분히 배울 수 있기 때문에 해당 글에서는 다루지 않는다. 

: SVN에 비해 GIT의 명령어가 훨씬 더 많고 관리하는 방법도 복잡하다. 하지만 사람들이 SVN에서 GIT으로 툴을 많이 변경하고 있다. 그 이유 중 가장 큰 부분을 차지 하는것은 브랜치의 관리 효율성일 것이다.

SVN과 GIT의 가장 큰 차이는 브랜치 관리에 있다고 볼 수 있다. SVN은 GIT 보다 브랜치를 관리하는데 있어서 훨씬 무겁다. SVN에서 브랜치를 만드는 것은 쉽지만 실제 쓰기위에서는 해당 브랜치를 중앙 서버에서 다운 받는데 전체 커밋 내용을 모두 받아야만 한다. 프로젝트가 무거우면 무거울 수록 브랜치를 하나 생성하고 사용하는데 시간이 오래 걸린다.

상대적으로 GIT은 브랜치의 생성/삭제/관리의 속도가 빠른데, GIT에서 브랜치를 생성하게 되면 특정 커밋을 가리키는 포인터만을 만들기 때문이다. 

 

[ 브랜치 생성 비교 ]
[ SVN 개발 브랜치 수정 후 메인 브랜치에 머지 과정 ]
[ git의 개발 브랜치에서 메인 브랜치로 머지하는 과정 ]

 

: svn은 브랜치에서 수정한 내용을 머지할 때 변경 사항 자체를 머지한다. git은 변경 사항에 해당 되는 새로운 커밋을 만들고 메인 브랜치가 새로운 커밋을 가리킬 수 있도록 한다. ( git에서의 브랜치는 커밋을 가리키는 하나의 표시라고 볼 수 있다. )

● 브랜치는 왜 중요한가?

※ 브랜치 ( Branch )

: 기존 작업물의 영향을 미치지 않고 작업물을 수정하거나 삭제가 가능하며 기존 작업물에 변경 사항을 다시 합칠 수 있는 것을 말한다.

: 툴을 사용했을 때 기본적으로 관리되고 있는 작업물들도 하나의 브랜치라고 할 수 있다. 메인( Master ) 브랜치라고 할 수 있다.

▶ 작업물을 관리하는 이유는 개발 중이거나 유지보수 중인 작업물을 안정적으로 상용화하기 위함이다. 안정적으로 상용화 하기 위해서는 브랜치를 사용할 수 밖에 없는데, 만약 브랜치를 사용하지 않고 메인 브랜치에서만 작업한다면 특정 커밋부터 상용화할 수 있고, 다른 커밋내용은 빠져야 하는지에 대한 체크가 필요해진다.

▶ 브랜치를 관리하는 방식에는 크게 2가지가 있다.

① Long-Running 

: 메인 브랜치에서 개발 브랜치를 하나 생성한 뒤, 다음 업데이트를 목표로하는 기능을 개발 브랜치에서 개발하고 개발 브랜치의 내용이 안정화 되었을 때 메인브랜치에 머지하는 방식이다. 

: 메인 브랜치는 항상 안정화된 작업물이 올라가기 때문에 서비스 중인 버전과 거의 동일한 상태를 유지할 수 있다. 이를 통한 이점은 서비스 중 급작스런 이슈가 생겼을 때 메인 브랜치의 내용을 빠르게 수정해서 업데이트 할 수 있다는 점이다. 메인 브랜치만 사용했다면 개발중인 커밋내용을 제거해야되는 이슈가 생긴다.

② Topic 

: 메인 브랜치에서 특별한 기능 단위 또는 이슈 단위로 브랜치를 생성하고 머지하는 방식이다. 작은 단위로 브랜치를 만들고 머지하기 때문에 기능의 테스트 및 제거가 쉽다.

브랜치를 통해 안정적인 서비스가 가능하기 때문에 GIT이 많은 사람의 선택을 받고 있다. 프로젝트의 규모가 커지면 커질수록 GIT의 브랜치 관리 효율성이 높기 때문이다.

SVN으로도 위의 브랜치 관리 방식을 사용할 수 있고, 충분히 안정적인 서비스도 할 수 있다. 단지 GIT에 비해 시간이 걸릴 뿐이다.

 참고 자료 : https://git-scm.com/book/ko/v2