공유 폴더 방식은 버전 관리 자료가 로컬 컴퓨터의 공유 폴더에 저장되어 관리되는 방식으로, 다음과 같은 특징이 있다.
RCS(Revision Control System)
여러 개발자가 프로젝트를 수행할 때 시간에 따른 파일 변화과정을 관리하는 소프트웨어 버전 관리
도구로, 소프 파일을 동시에 수정하는 것을 방지하고, 다른 방향으로 진행된 개발 결과를 합치거나
변경 내용을 추적할 수 있다.
클라이언트/서버 방식은 버전 관리 자료가 중앙 시스템(서버)에 저장되어 관리되는 방식으로, 다음과 같은 특징이 있다.
분산 저장소 방식은 버전 관리 자료가 하나의 원격 저장소와 분산된 개발자 PC의 로컬 저장소에 함께 저장되어 관리되는 방식으로, 다음과 같은 특징이 있다.
Subversion은 CVS를 개선한 것으로, 아파치 소프트웨어 재단에서 2000년에 발표하였다.
CVS(Concurrent Version System)
공동 개발을 편리하게 작업할 수 있도록 각종 소스의 버전 관리를 도와주는 시스템
trunk
'몸통', '줄기'라는 의미로, 개발 과정에서 가장 중심이 되는 디렉토리이다. 디렉토리 안에
소스 파일과 추가 작업을 위한 서브 디렉토리인 branches 디렉토리가 있다.
명령어 | 의미 |
---|---|
add | 새로운 파일이나 디렉토리를 버전 관리 대상으로 등록한다, add로 등록되지 않은 대상은 commit이 적용되지 않는다. |
commit | 버전 관리 대상으로 등록된 클라이언트의 소스 파일을 서버의 소스 파일에 적용한다. |
update | 서버의 최신 commit 이력을 클라이언트의 소스 파일에 적용한다, commit 전에는 매번 update를 수행하여 클라이언트에 적용되지 않은 서버의 변동 내역을 클라이언트에 적용한다. |
checkout | 버전 관리 정보와 소스 파일을 서버에서 클라이언트로 받아온다. |
lock/unlock | 서버의 소스 파일이나 디렉토리를 잠그거나 해제한다. |
export | 버전 관리에 대한 정보를 제외한 순수한 소스 파일만을 서버에서 받아온다. |
info | 지정한 파일에 대한 위치나 마지막 수정 일자 등에 대한 정보를 표시한다. |
diff | 지정된 파일이나 경로에 대해 이전 리버전과의 차이를 표시한다. |
merge | 다른 디렉토리에서 작업된 버전 관리 내역을 기본 개발 작업과 병합한다. |
Git은 리누스 토발즈가 2005년 리눅스 커널 개발에 사용할 관리 도구로 개발한 이후 주니오 하마노에 의해 유지 보수되고 있다.
명령어 | 의미 |
---|---|
add | 작업 내역을 지역 저장소에 저장하기 위해 Staging Area에 추가한다, '--all' 옵션으로 작업 디렉토리의 모든 파일을 스테이징 영역에 추가할 수 있다. |
commit | 작업 내역을 지역 저장소에 저장한다. |
branch | 새로운 브랜치를 생성, 최초로 커밋을 하면 마스터 브랜치가 생성된다, 커밋 할 때마다 해당 브랜치는 가장 최근의 커밋한 내용을 가리키게 된다,'-d'옵션으로 브랜치를 삭제할 수 있다. |
checkout | 지정한 브랜치로 이동한다, 현재 작업 중인 브랜치는 HEAD 포인터가 가리키는데 checkout 명령을 통해 HEAD 포인터를 지정한 브랜치로 이동시킨다. |
merge | 지정한 브랜치의 변경 내역을 현재 HEAD 포인터가 가리키는 브랜치에 반영함으로써 두 브랜치를 병합한다. |
init | 지역 저장소를 생성한다. |
remote add | 원격 저장소에 연결한다. |
push | 로컬 저장소의 변경 내역을 원격 저장소에 반영한다. |
tetch | 원격 저장소의 변경 이력만을 지역 저장소로 가져와 반영한다. |