안드레이 2024. 4. 26. 13:31

▼버전관리  도구 구분

★형상 관리 관련 주요 용어

저장소(Repository): 최신 버전의 파일들과 변경 내역에 대한 정보들이 저장되어 있는 공간

가져오기(Import): 버전 관리가 되고 있지 않은 아무것도 없는 저장소(Repository)에 처음으로 파일 복사

체크아웃(Check-Out): 저장소에서 파일을 받아온다 / 소스파일과 함께 버전관리를 위한 파일을 받아온다

체크인(Check-In): 체크아웃 한 파일의 수정을 완료한 후 저장소(Repository)에 새로운 버전의 파일로 갱신

커밋(Commit): 체크인 수행시 이전에 갱신된 내용이 있는 경우 충돌을 알리고 Diff 도구로 수정 후 갱신 완료

동기화(Update): 저장소에 있는 최신 버전으로 자신의 작업공간을 동기화

차이(Diff): 새로운 개발자가 추가된 파일의 로그(Change Log)를 확인하면서 이전 개발자가 처음 추가한 파일과 이후 변경된 파일의 차이 확인

브랜치(Branch; 가지): 메인 개발 과정과 별도로 새로운 기능의 테스트와 같이 추가적인 작업을 수행하기 위한 서브 디렉토리. branches 디렉토리 하위에 작업별 디렉토리를 만들고 그 안에서 개발을 진행한다. 이후 이 별도의 개발 결과를 Trunk와 병합할 수 있다.

트렁크(Trunk; 몸통): 개발 메인 디렉토리. 소스 파일과 추가 작업을 위한 서브 디렉토리(branch)가 존재.

 

★버전 관리 도구 구분

공유 폴더 방식 담당자 한  명이 공유 폴더 내 자료를 자신의 PC로 복사한  후  컴파일하여 이상 유무를 확인하고, 파일의 오류가 확인되면, 해당 파일을 등록한 개발자에게 수정의뢰한다.
개발자들은 매일 완료된 파일을 공유 폴더에 복사하여 관리한다.
파일에 이상이 없다면 다음날 각 개발자가 동작 여부를 다시 확인한다.
파일의 변셩사항을 데이터베이스에 기록하여 관리한다.
종류: SCCS, RCS, PVCS, QVCS
클라이언트/ 서버 방식 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식이다.
서버의 자료를 개발자별로 자신의 PC로 복사하여 작업 후 변경된 내용을 서버에 반영하고, 모든 버전 관리는 서버에서 수행하는 방식이다.
하나의  파일을 서로 다른 개발자가 작업할 경우 경고 메세지를 출력한다.
서버에 문제가 생기면 서버가 복구되기 전까지 다른 개발자와의 협업 및 버전 관리 작업을 중단한다.
종류: CVS, SVN, CMVC, Perloroe, CVSNT, Clear, Case
분산   저장소 방식 버전   관리 자료가 원격 저장소와 로컬 저장소와 함꼐 저장되어 관리된다.
로컬  저장소에서 버전 관리가 가능하므로 원격 저장소에 문제가 생겨도 로컬 저장소의 자료를 이용하여 작업할 수 있다.
개발자 별로 원격 저장소의 자료를 각자의 로컬 저장소로 복사하여 작업 후 변경사항을 로컬 저장소에서 우선 적용하여 로컬 버전 관리가 가능하다.
개발 완료된 파일을 수정한 다음에 로컬 저장소에 먼저 커밋한 이후, 다시 원격 저장소에  반영하는 반식이다.
종료: Git, Vazaar, Mercurial, TeamWare, Bitkeeper, Plastic SCM, GNU arch

 

★ 주요 버전 관리 도구

CVS(Concurrent
Version System)
동시 버전 시스템으로 소프트웨어 프로젝트를 진행할 떄 파일로 이뤄진 모든 작업과 변화를 추적하고 여러개발자가  협력하여 작업할 수 있게 한다. 오픈소스 프로젝트에서 널리 사용 되었지만 최근에는
CVS가 한계를 맞아 이를 대체하는 Subversion이 개발되었다.
RCS( RecisionControl
System)
CVS와의 차이점은 소스 파일의 수정을 한 사람만으로 제한된다. 
다수 사용자가 동시에 파일 수정을 할 수  없도록 파일 잠금 방식으로 버전을 관리하는 도구이다.
SVN(Subversion) CVS에서 속도 개선, 저장공간, 변경 관리 단위가 작업 모름 단위로 개선. 2000년부터 콜렙넷에서 개발
CVS와 사용 방법이 유사해 CVS사용자가 쉽게 도입해 사용할 수 있으며, 아파치 최상위 프로젝트로서 전 세계 개발자 커뮤니티와 함께 개발되고 있다. 디렉터리 파일을 자유롭게 이동해도 버전 관리가 가능하다.
Bitkeeper SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 버전관리 도구이다.
Git 프로그램 등의 소스 코드 관리를 위한 분산 저장소  방식 시스템이다. 리누스 토르발스가 리눅스 커널 개발에 이용하려고 개발하였으며,현재는 다른 곳에도 널리 사용되고 있다.
지역 저장소와 원격 저장소 2개의 저장소가 존재하는데 지역저장소에서 버전관리가 진행되어 처리가 빠르다. 깃의 작업 폴더는 모두 전체 기록과  각 기록을 추적할 수 있는 정보를 포함하고 있으며, 네트워크에 접근하거나 중앙 서버에 의존하지 않는완전한 형태의 저장소이다.
Clear Case 복수 서버, 복수 클라이언트 구조이기에 서버 확장 요구가 있을 때 필요한 서버를 하나씩 추가할 수 있다.

 

★컴포넌트 저장소(Repository)

인증을 받은 컴포넌트를 등록하는 저장소로 손쉽게 컴포넌트를 이용할 수 있다.

저장소는 컴포넌트의 최신 버전을 유지하고 있으며, 컴포넌트의 버전별 상태도 유지하고 관리함으로서 사용자가 컴포넌트 이용을 쉽게 한다.

 

★Git과 Subversion 주요 명령어

Git Subversion
init 새로운 로컬 git 생성하기 import 아무것도 없는 서버의 저장소에 맨처음 소스파일을 저장한다.
add 저장소에 파일 추가하기 checkin 페크아웃으로 가져온 파일을 수정 후 저장소에  새로운 버전으로   갱신한다.
commit 작업 내역 지역 저장소에 저장하기 checkout 타 개발자가 수정 작업을 위하여 저장소에 저장된   파일을 자신의 작업 공간으로  불러온다.
branch 새로운 파생 저장소인 브랜치 생성하기 commit 체크인 시 이전 갱신  사항이있는 경우 충돌이 있을 경우 알림을 표시하고 diff도구를 이용하여 수정한  뒤 커밋과정을 수행한다.
checkout 선택한 브랜치로 이동하기 diff 새로운 개발자가 추가된 파일의 수정 기록을 보면서 기존 개발자가 처음 추가한 파일과  이루 변경된   파일의 차이를 본다.
merge 현재 브랜치와  지정한 브랜치를 병합하기 update 저장소에 존재하는 최신 버전 자료와 자신의 작업 공간을 동기화 한다.
fetch Git 서버에서 코드를 받아오기 branch 주 저장소에서  파생된 프로젝트이다.
pull Git 서버에서최신 코드 받아와 병합하기 lock/unlock 파일과 다이렉터리를  다른 개발자가 손댈수 없게 잠금하거나 잠금을 해제한다.
remote 원격 저장소 추가하기 export 서버의 저장소에서 소스 파일을 불러온다.
clone 원격 저장소에 있는 프로젝트
복사하여 내려박기
info 지정된 파일에 대한 정보를 표시한다.
fork 저장 원격저장소 에서 원격 복제하기 merge 다른 디렉터리에서 작업된 버전 관리내역을 기본 개발 작업과 병합한다.