S/W 테스트2012. 3. 26. 17:48
버전 관리(version control, revision control), 소스 관리(source control), 소스 코드 관리(source code management, SCM)란 동일한 정보에 대한 여러 버전을 관리하는 것을 말한다.

공학과 소프트웨어 개발에서 팀 단위로 개발 중인 소스 코드나, 청사진 같은 설계도 등의 디지털 문서를 관리하는데 사용된다.

그러한 문서의 변경 사항들에 숫자나 문자로 이뤄진 ("개정판 번호"나 "개정판 레벨"이라고도 불리는) "버전"을 부여해서 구분한다. "버전"을 통해서 시간적으로 변경 사항과 그 변경 사항을 작성한 작업자를 추적할 수 있다.

간단한 버전 관리 방법으로는 처음 작성한 코드에 버전 번호 1을 부여한다.

변경 사항이 생기면, 버전 번호를 2로 증가시킨다. 이처럼 추후 변경 사항이 발생 시마다 버전 번호를 1씩 증가시킨다.
 
소프트웨어 엔지니어링에서는 일반적인 소프트웨어 소스 코드만을 관리하는 내역을 주로 버전 관리라고 정의하게 된다.

일반적으로 산업 공학이나 이전 생산 기반 제조 공학 등에서 소프트웨어 쪽으로 넘어오는 학문적 관심에 의해 이전 생산 공학에서 사용하던 개념을 가져오게 되었고, 그에따라 버전 관리(Software Version Manamgement)와 형상 관리(Software Configuration Management)의 개념들이 따라왔다고 볼 수 있겠다.
 
한국의 경우, 대부분의 서적들을 영어>일본어>한글의 순으로 번역된 경우에 따라 오역된 경우가 많고 관련된 분야에 대해 정확하거나 깊은 이해 없이 단순 소개하며 넘어간 경우가 대부분이라 아직도 정확한 버전 관리와 형상 관리의 구분이나 이해가 없다고 보는 것이 맞다.
 
버전 관리 소프트웨어 도구들은 거의 모든 소프트웨어 개발 프로젝트에서 필수적인 요소로 인식되고 있다.

* 타입분류
Floder공유타입 - RCS, SCCS
Client/Server 타입 - Subversion(SVN), CVS, Perforce, ClearCase, TFS
분산 저장소 타입 - Git, Mercurial, BitKeeper, SVK, Darcs

* 오픈소스 버전 관리 시스템
 : CVS, Subversion, SVK, Bazaar, Mercurial

* 상용 버전 관리 시스템
: Visual SoruceSafe, IBM Rational ClearCase, BitKeeper 

** 서브버전(Subversion)은 자유 소프트웨어 버전 관리 시스템이다.


명령행 인터페이스에서 사용하는 명령어를 따서 “SVN”이라고 줄여서 부르기도 한다. 제한이 있던 CVS를 대체하기 위해 2000년부터 콜랩넷에서 개발되었다.
서브 버전은 서버-클라이언트 모델을 따른다. 서버는 작업하는 컴퓨터내에 둘 수도 있고, 전산망에 연결된 별도의 컴퓨터에 두고 사용할 수도 있다. 서브버전 서버와 클라이언트는 http, https, svn, svn+ssh의 규약으로 통신한다.
http://tortoisesvn.tigris.org/

** 기트(Git /git/)는 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템이다.


빠른 수행 속도에 중점을 두고 있는 것이 특징이다. 최초에는 리누스 토르발스가 리눅스 커널 개발에 이용하려고 개발하였으나, 현재는 널리 사용되고 있다.
Git의 작업 폴더는 모두, 전체 기록과 각 기록을 추적할 수 있는 정보를 포함하고 있으며, 완전한 형태의 저장소이다. 네트워크에 접근하거나 중앙 서버에 의존하지 않는다.
현재 주니오 하마노(Junio Hamano)가 소프트웨어 관리를 감독하고 있다. Git은 GNU 일반 공중 사용 허가서 v2 하에 배포되는 자유 소프트웨어이다.
- Software configuration management with subversion
http://git-scm.com/

* CVS(Concurrent Versions System, 동시 버전 시스템)는 동시 버전 관리 시스템(Concurrent Versioning System)으로도 알려져 있으며, 버전 관리 시스템을 구현한다. 보통 소프트웨어 프로젝트를 진행할 때, 파일로 이뤄진 모든 작업과 모든 변화를 추적하고, 여러 개발자(지역적으로 떨어진)가 협력하여 작업할 수 있게 한다. CVS는 GNU 일반 공중 사용 허가서 하에서 배포된다. CVS는 오픈 소스 프로젝트에서 널리 사용되었다. 현재는 CVS가 한계를 맞아, CVS를 대체하는 서브버전이 개발되었다.

* 머큐리얼(Mercurial)은 소프트웨어 개발을 위한 크로스-플랫폼 분산 버전 관리 도구이다.
대부분은 파이썬을 사용하여 개발되었으며, diff 부분은 C를 사용하여 개발되었다. Mercurial은 기본적으로 명령 줄 인터페이스 프로그램이다. 모든 명령은 hg로 시작하는데, hg라는 것은 수은의 원소 기호이기도 하다.
머큐리얼은 높은 성능과 규모가변성(scalability)을 포함해, 완전히 분산된 개발 환경, 견고한 텍스트 파일과 이진 파일 처리, 진보한 형태의 브랜칭 및 병합 기능에 중점을 두고 있으며, 개념적으로는 단순함을 추구한다. 웹 인터페이스와의 연동에도 중점을 두고 있다.
최초 개발자와 현재 수석 개발자는 맷 맥콜이다.

* 버전 관리에서 사용하는 용어들

체크 아웃(Check Out) : 저장소(Repository)에서 파일을 가져온다.
체크 인(Check In, Commit) : 체크 아웃(Check Out)한 파일의 수정이 끝난 경우 저장소(Repository)에 새로운 버전으로 갱신 하는 일이다. 이때 이전에 갱신된 것이 있는 경우 충돌(conflict)을 알려 주며 diff 도구를 이용해 수정하고 commit하는 과정을 거치게 된다.
가져오기(Import) : (버전 관리되고 있지 않은) 로컬 디렉토리의 파일을 처음으로 저장소(Repository)에 복사한다.
저장소(Repository) : 파일의 현재 버전와 변경 이력 정보를 저장하는 저장소.




 

'S/W 테스트' 카테고리의 다른 글

test tool  (0) 2014.05.15
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
Posted by 프리스케이터