버전관리 방법에는 어떤 방법들이 있는지 알아보기
728x90
반응형

버전관리란 무엇이고, 버전관리 방법에는 어떤 방법들이 있는지 알아보기.


 과거에 SVN을 써본 경험이 있다. 또한 코딩 공부를 하는 과정에서 Git도 조금 경험해 보았다. 쓸 때마다 느끼는 것이지만 이런 개념을 생각한 사람을 존경하게 된다.


 여느 때처럼 어떤 시작이 있었는지 부터 찾아보았다. 그리고 발견한 것이 아래의 표이다.


Generation

Networking

Operations

Concurrency

Examples

First

None

One file at a time

Locks

RCS, SCCS

Second

Centralized

Multi-file

Merge

before

commit

CVS, SourceSafe,

Subversion,

Team Foundation Server

Third

Distributed

Changesets

Commit

before

merge

Bazaar,

Git,

Mercurial


 초기 버전관리는 보통 한개의 파일에 한번의 관리만 가능했다. 이 당시의 RCS(Reversion Control System)은 자동으로 버전을 저장하고, 꺼내고, 비교하고, 추적하고, 합치는 일을 할 수 있었다. 하지만 여러 사람이 관리하는데에는 제한 사항이 많았다.


 2세대가 되면서 본격적으로 버전 관리 시스템의 활용도가 높아졌다. 대표적으로 CVS와 Subversion(SVN)이 있다. 이 시스템은 네트워크를 통해 다른 사람들과 같은 소스를 관리할 수 있었다. 두개 모두 작업 충돌이 잘 발생하지 않기 때문에 자유롭게 사용하고 충돌이 나면 해결하자는 낙관적 잠금 방식이 적용되어 있다. 특히 SVN은 CVS보다 많은 장점을 가지고 있어서 개발자들이 좋아했다. 변경된 작업 단위로 Commit이 가능했고 더 빨랐다.


 지금은 3세대로서 Git이 대표적이다. SVN에 익숙해져 있는 나로서는 Git은 서버도 따로 없고 부르는 용어도 생소했다. 이 둘의 차이를 통해 3세대의 장점을 이해할 수 있다. Git은 개발자별로 Commit history를 관리할 수 있다. 즉, 독립성을 가진다. 그런 동시에 SVN보다 높은 유연성을 가진다. 서버 저장소와 개발자 저장소가 독립적으로 history를 가지므로 branch별로 관리하면서 원하는 때에 원하는 소스코드를 버전 관리 할 수 있는 것이다.


 지금 버전관리는 필수적이다. 나만 잘해서 되는 프로젝트는 없기 때문이다. 개발자가 아니더라도 같은 프로젝트 업무를 하는 사람들과 소통하기 위한 수단으로도 중요한 역할을 한다. 배우는 시기에 버전 관리도 같이 배운다면 이것이야 말로 사자에 날개를 달아주는 것이 아닐까? (적절한 비유인지 자신은 없다.)



[참고한 자료]

A History of Version Control

Git와 SVN의 차이

시작하기 - Git 기초

CVS/SVN을 이용한 버전 관리 

형상관리에 들어 보셨나요?



728x90
반응형