형상관리(Version Control Revision Control) 툴은 소프트웨어 버전 관리 툴이라고도 한다. 형상관리는 소스의 변화를 끊임없이 관리하는 것을 뜻한다. 소스를 버전 별로 관리할 수 있어 개발 시 실수로 소스를 삭제 및 수정하기 전으로 돌아가야되는 경우에 유용하게 사용된다.
Git은 분산 버전 관리 시스템으로 로컬 저장소를 사용하여 작업할 수 있다.
- git은 개발자가 자신만의 commit history를 가질 수 있으며, 개발자와 서버의 저장소는 독립적으로 관리가 가능하다.
- commit한 내용에 실수가 있더라도 바로 서버에 영향을 미치지 않는다.
- 개발자는 마음대로 commit(push)하다가 자신이 원하는 순간에 서버에 변경 내역(commit history)을 보낼 수 있다.
- 서버의 통합 관리자는 관리자가 원하는 순간에 각 개발자의 commit history를 가져올 수 있다.
SVN은 중앙집중식 버전 관리 시스템으로 버전 관리 서버에 소스코드가 저장되어 있어 온라인 상태에서만 작업을 수행할 수 있다.
- SVN은 보통 대부분의 기능을 완성해놓고 소스를 중앙 저장소에 commit한다.
- commit 자체가 중앙 저장소에 해당 기능을 공개한다는 의미이다.
- 개발자가 자신만의 version history를 가질 수 없다. 때문에 몇일전 까지에 한하여 작업했던 내역을 확인 가능하지만 버전 관리가 되지 않는다.
- commit한 내용에 실수가 있을 시에 다른 개발자에게 바로 영향을 미치게 되는 단점도 있다.
Git은 로컬에 저장을 할 수 있어 SVN보다 충돌이 날 가능성이 보다 높다. 때문에 Git은 Commit등 올바른 코딩 습관이 필요하다.
SVN은 Git보다 기능이 제한적인 만큼 대규모 작업을 수행하기 수월하다. 충돌이 일어날 경우 대처가 더 편하며, 일반적으로 큰 문제로 번지지 않는다.
- 저장소 크기와 성능
: SVN은 파일의 변화를 추적하는 방식으로 파일을 저장하며, Git은 파일의 스냅샷을 저장하는 방식으로 파일을 저장한다.- 보안 및 접근 제어
: SVN은경로 기반의 접근 제어를 제공하고 특정 경로의 사용권한을 지정할 수 있다. 반면 Git은 기본적으로 소스코드의 변경 이력을 기록하는 것에 초점이 맞춰저 있다.