- Today
- Yesterday
- Total
메이쁘
[Tool] SVN과 Git에 대해 간단 정리 및 비교 본문
안녕하세요.
프로젝트를 진행함에 있어 형상 관리 도구는 반드시 필요합니다.
대표적으로 소스코드 관리 및 협업 개발에 용이하기 때문인데요.
그 중 양대산맥인 SVN과 Git에 대해 간단히 정리해보겠습니다.
SVN
- SubVersion. 말 그대로 형상 관리 도구 중 하나로서 파일 서버라고 보시면 됩니다.
- 하나의 파일 서버에서 여러 사람이 작업한 프로젝트의 소스를 통합(커밋, 푸시) 및 관리(히스토리, 브랜치 등) 하며 저장하기 위해 사용됩니다.
하나의 서버에서 소스를 쉽고 유용하게 관리하기 위함이죠.
*** 형상관리 : 프로젝트를 수행하면서 생기는 산출물 및 문서, 소스코드 등 결과물을 형상이라고 하는데, 이러한 형상에 대한 변경을 체계적으로 관리하는 것을 뜻합니다.
SVN의 소스코드는 TRUNK 라는 곳에 위치합니다. (차 트렁크) Git의 방식과 크게 다른건 없습니다. 각자의 로컬 PC에 소스코드를 내려받고, 소스를 업로드하여 다시 SVN 서버에 업데이트 치는 방식이죠.
- SVN은 중앙 집중식 코드 관리 방식입니다. 위 그림처럼 하나의 SVN Repository에 접근 가능한 모든 PC가 달라붙어서 소스 코드를 관리합니다. 그렇기 때문에, 저기 한 가운데에 있는 SVN 서버가 없어지거나 터진다면 난리납니다. 전부 잘못되기 때문에 처음부터 다시 시작해야합니다.
- 또한, 개개인의 버전 관리를 하지 못합니다. 무조건 파일 서버에 Commit 하기 때문에, 다른 사람들의 Log History까지 쭈욱 살펴가면서 자기의 Commit을 찾거나 소스를 찾거나 해야합니다.
- 마지막으로, 충돌 발생이 아주 높습니다. 만약, 소통이 안되서 둘이 동시에 올리게 되거나 그러면? 이를 해결하는데
시간이 오래 걸립니다.
Git
- Git 또한 SVN과 같이 형상 관리 도구입니다. Git 서버에 소스코드를 올리거나 브랜치를 사용하며 관리하죠. 하지만, SVN과 차이점이 존재합니다.
- 중앙 집중식 코드 관리 방식의 SVN과는 다르게 Git은 분산 소스코드 관리 방식 입니다. 그렇기 때문에, 빠르고 안전합니다.
- Git은 각각의 PC에 Local Repository가 존재합니다. 그래서 Git Repository(Server Repository) 에 매 Commit마다 접근해서 push하는게 아니라 Local Repository에 Commit하며 쌓아두고 한번에 push해도 됩니다.
이것은 큰 장점인데요. 파일 서버에 접근하는 빈도가 줄어든다는 것은 그만큼 오류나 충돌 발생이 줄어든다는 뜻이니까요.
- 그만큼 단점도 존재합니다. git을 사용하기 위해 git 수행 방법, branch 및 merge, pull request, rebase 등등 git 명령어들도 전부 공부해야합니다. 쉽지 않습니다.
정리
SVN
- SubVersion. 파일 서버 형상관리 툴
- 중앙 집중식 코드 관리 방식
- 장점 : 직관적. 사용법이 간단함
- 단점 : 중앙 SVN서버가 망가지면 전부 잘못됨. 하나의 파일서버에 모든 PC가 직접 소스코드에 접근하기 때문에 충돌 확률이 높음
Git
- 파일 서버 형상관리 툴
- 분산 소스코드 관리 방식
- 장점 : 빠르고 안전함. 로컬에서 복구하기가 용이함. 소스 히스토리 관리가 용이함
- 단점 : Git 사용하기 위해 공부해야하므로, 사용하기 어려움
- Server Repository 전 단계에 각각의 Local Repository 가 존재하여 여기에 Commit을 하며 쌓아두고, 한 번에 Git에 업데이트 가능.