SVN보다 Git가 더 좋을까?
요즘 SVN을 써야하나 Git를 써야하나? 또는 Mercurial을 써야하는 사람들이 많이 눈에 띈다.
또 누구는 아직도 ClearCase를 선호하고 Perforce가 좋다는 사람도 있고 혼란스럽기 그지 없다.
마치 골프를 치는데 골프채 뭐가 좋다고 서로 주장하는 것과도 같다. 아무리 좋은 골프채도 몸에 맞지 않으면 무용지물이다.
그럼 이런 애매한 것들을 깨끗하게 정의해 주겠다. ^^ 애정남 처럼
결론부터 말하면 다음과 같다.
- 분산된 환경에서 일을 하는 경우가 잦다면 Git를 써라.
- Github를 써야 한다면 Git를 써라.
- 그외에는 모두 SVN을 써라.
혼자 개발한다면 내키는 것을 써라.
회사에서 강제를 한다면 시키는대로 해라.
다른 툴에 완전히 익어서 바꾸기 싫으면 마음대로 해라.
기존에 VSS를 쓰던 사람들은 CVS를 써보면 신천지 였다.
소스코드관리시스템은 크게 3종류로 나눌 수 있다.
- Folder공유 타입 - RCS, SCCS
- Client/Server 타입 - Subversion(SVN), CVS, Perforce, ClearCase, TFS
- 분산 저장소 타입 - Git, Mercurial, Bitkeeper, SVK, Darcs
C/S타입과 분산타입의 가장 큰 차이는 Repository가 중앙에 하나가 있나, 분산되어 여러개가 있나이다.
SVN과 Git는 1:1로 비교하기는 어렵다. 형태가 다르고 장단점이 있을 뿐이다.
- Offline에서 자주 개발을 해야 할 때
- Git 기반의 Open source를 이용한 개발을 해야 할 때
- Git 기반의 Open source 프로젝트에 참여할 때
- Github을 써야 할 때
Git를 잘 모르고 쓰면 혼란이 가중될 수 있다. 소스코드 Conflict가 자주 일어날 수 있다.
공부도 훨씬 많이 해야 하며 전략을 잘 짜야 한다.
물론 혼자서 또는 두세명이 개발을 하고 있다면 뭘 써도 별로 혼란스러울 것이 없지만, 수십명 또는 수백명의 개발자가 동시에 일하는 환경이라면 Git는 좀더 정교해야 한다.
Git는 브랜치 머지가 더 손쉽고 Local에서 일하는 것에 대한 자유도가 훨씬 높다. 하지만 이러한 장점들이 Git를 쉽게 쓸 수 있게 해주지는 않는다.
하지만 이 블로그를 읽은 정도의 개발자라면 개인적으로 SVN뿐만 아니라 Git에 대해서도 빠삭하게 알고 남들이 물어볼때 조언을 해 줄 정도는 되어야 할 것 같다. ^^
* 이 포스트는 blogkorea [블코채널 : 꿈꾸는 소프트웨어 개발자 세상] 에 링크 되어있습니다.
Image by h4ck3rm1k3
'기반시스템 > 소스코드관리' 카테고리의 다른 글
| SVN보다 Git가 더 좋을까? (21) | 2011/10/25 |
|---|---|
| 이 소스는 건들지마 (4) | 2011/10/09 |
| 소스코드 Conflict (5) | 2011/02/18 |
| 소스코드관리시스템 사용도 2차 조사 결과 (10) | 2010/12/03 |
| 2차 소스코드관리시스템 사용도 조사 Poll (12) | 2010/11/14 |
| 마이크로소프트, 구글의 소스코드 트리의 비밀? (9) | 2010/06/08 |













헐.....

...
마지막 문장에서... 좌절했습니다.
열심히 보고는 있지만 (항상 좋은 글 감사합니다.)... 설명해줘라? 조언??
-_-;;
그냥 개발자 안할래요
-마음가는 길은 곧은 길-
안녕하세요. trueonot님
개발자가 아니라면 굳이 신경쓰지 않으셔도 됩니다. ^^
최근 고민 중의 하나 였는데, 애정남처럼 깔끔히 정리를 해주시네요.^^
저는 Git에 해당되지 않아서 SVN에 더 많은 애정을 줘야 겠습니다.
제이즈님 안녕하세요.
SVN이냐 Git보다 어떻게 쓰느냐가 더 중요합니다.
제가 본 90% 이상의 회사들이 SVN을 쓰던 Git를 쓰던 엉터리로 쓰면서 제 기능의 5%도 활용 못하고 있습니다.
그만큼 제대로 쓰기는 어렵습니다.
mercurial은 왜 버리시나요 -_-;;;
mercurial도 쓰기 편한데.
구글링을 해보면 git vs. mercurial에 대한 비교 논쟁은 쓸데없는 일이라고 하네요. 그냥 닥치고(?) 하나 골라서 열심히 쓰라고.
http://gitvsmercurial.com/ 대문에 적힌 글입니다. 좀 과격하지만 맞는 말인 듯하네요. :-)
"Who the FUCK cares?
Use what YOU like, not what someone on the internet tells you to."
멤피스님 안녕하세요.
mercurial도 좋은 툴임에 틀림없습니다. Git가 사용률이 더 높으므로 대표로 말씀드립니다. mercurial이 편하면 mercurial 쓰시면 됩니다. ^^
좋은 글이네요.
Git은 막강한 만큼 배우는데 비용이 많이 들더라구요.
Android 같이 방대한 코드를 모듈화해서 관리할 때도 Git이 좋은 것 같습니다.
Repo라는 툴이 있으니까요..
yducy님 감사합니다.
git이 배우기 어려운건 기능이 많기 때문입니다. svn처럼만 사용한다면 그리 어렵지 않습니다. 중앙 저장소 두고 중앙 관리자 두고 pull, push(svn의 update, commit) 위주로 사용하는 거지요. 그쵸, 브랜칭, 병합 등으로 가면 헷갈리지요. 그건 개념이 달라서 어렵죠. svn은 중앙집중 관리, git은 분산 개발이 모토입니다.
근데 git이냐 svn이냐의 선택 기준은 더 있습니다. svn은 느립니다. 특히 http에 태운 svn은 이제 2011년에 보니 문제가 심각하구나 생각이 듭니다.(아직 1.7의 http 성능 향상은 써보지 않았습니다만.)
svn은 자체 권한 관리, http 연동, ldap 연동이 가능합니다. 그런데 git은 ssh에만 태울 수 있어서 ssh를 통해 사용자 인증을 처리해야 합니다. ldap 연동이 필요하면 ssh를 구성해야 하는 거죠.
안녕하세요. 나지오님
SVN의 속도는 Git와 비교하여 가끔 이슈를 제기합니다. Git는 repository가 개인장비에 있으므로 전광석화같은 속도를 자랑하죠. ^^ 하지만 push, pull 때는 만만치 않죠. 게다가 clone을 만들 때는 많이 기다려야죠.
SVN은 기존의 어떠한 SCM보다 빠릅니다. diff만 왔가 갔다 하므로 네트워크 상에서 속도가 빠르죠. 실제로 수백명의 개발자가 동시에 사용을 해도 성능이 문제가 되지는 않습니다.
단 처음에 대량으로 check out을 받을 때는 좀 기다려야죠.
SVN과 Git는 1:1로 성능 비교를 하기에는 성격이 너무 다릅니다. ^^ 둘다 좋습니다.
블로그를 안해서 모르는데 티스토리는 원래 댓글 줄바꿈을 없애나요? 댓글에 메일 주소 쓰는 거두 없구. 댓글 달리면 어떻게 알쥐...
결론의 그외의 상황이라면 SVN을 써라보단,,개인적으론 가능하다면 Git을 써라가 낳을것같습니다.
Git이 GUI툴의 지원이 상대적으로 부족해보이는 면이 있긴합니다.(주관적입니다)
하지만 로컬에서의 브랜치작업은 SVN의 상대적인 직관적 사용법과 Git의 상대적인 난해함을 모두 커버하고도 남을 만큼 강력하더군요. SVN으로 브랜치생성해서 작업을 어쩌다 한번 하는 개발자는 공감하기어려울 수도 있으나 브랜치작업이 많은경우 Git은 너무나 편리합니다.
안녕하세요. 슬픈멍멍님 ^^
제 결론은 SVN입니다. 엄마가 좋아? 아빠가 좋아? 토론은 하루 종일 할 수도 있죠. ㅎㅎ
SVN은 브랜치, 머지에 있어서 부족함이 없습니다. Git가 브랜치,머지가 직관적이고 쉽지만 SVN은 강력하죠. SVN의 브랜치, 머지가 좀 어렵다면 Git는 기능적으로 풍부하고 다양하지만 경험이 부족하면 어렵습니다.설명이 복잡하지만, 이게 제 결론입니다.
Git vs SVN은 주관적인것이기도 하지만 CVS 에서 SVN으로 거의 넘어오는 것을 보면,
언젠가는 SVN같은 중앙 저장소 방식에서 Git,Mercurial 같은 분산 버전관리시스템으로 넘어가지 않을까 추측해봅니다 ㅎㅎ
그러나 사실 Git 이냐 SVN 보다는 어떤 형상관리툴이라도 사용한다는게 중요한것 같습니다.
글 잘보고 갑니다. 좋은 글 많이 부타드립니다 ^^
SVN을 쓰던 Git를 쓰던 거의 대부분의 회사들은 제대로 사용을 못하고 있는 것이 현실이죠.
누가 인기를 더 끌지는 저도 궁금하네요. ^^
git는 소스 한번 받아 볼때 외에는 직접 사용해 본적이 없어서 잘 모르겠고
cvs보다는 확실히 svn이 편하지만 서버구성하기가 조금 짜증이 나더라구요
개인적으로는 svn을 사용하고 회사규모에서 사용해야 한다면 그냥 따르는것이 좋다고 봅니다 ㅋㅋ
구차니님 안녕하세요.
SVN 서버 구성은 회사에서 딱 한명만 잘 알면 되잖아요. ^^ 나머지 사람들은 감사하게 그냥 잘 쓰면 되겠죠.
이번 글은 너무 명확해서 참 좋으네요.
김재호님 반갑습니다. ^^
네이버에서 SVN과 GIT에 대해 검색하다가 읽게 되었습니다. 전 SVN을 잘 쓰고 있거든요. GIT가 분산저장이라는건 알겠는데 도저히 감이 안 잡히네요.
프로젝트관리툴로는 그동안 TRAC을 써오다가 Redmine을 쓰고 있는데 GIT에 적합한 프로젝트관리툴이 뭐가 있는지도 궁금합니다.
여튼 잘 읽고 갑니다. 아직은 SVN에 익숙해서 그런지 계속 쓰게 되네요. GIT도 차차 공부해봐야겠습니다. ㅎㅎ
안녕하세요. 동범님
Git는 서버자체를 각 PC에 두고 서로 복제하고 Merge하는 개념입니다. ^^ SVN을 잘 쓰시면 그냥 쓰시면 됩니다.
Trac, Redmine 등은 프로젝트관리툴이라기보다는 이슈관리시스템입니다.
대부분의 유명한 이슈관리시스템은 거의 Git, SVN 등과 연동이 잘 됩니다.
굳이 필요하지 않은데 Git를 쓰려고 노력할 필요는 없고, 알아봐 놓는 것은 좋을 것 같습니다.