서브버전 만이 아니라 CVS에서도 공통으로 사용하는 용어가 있습니다.
이 글은 그런 용어들을 담고 있습니다. - July 16, 2007
리비전 (rivision) : 변경들의 논리적인 단위(?), 변경 집합이라고 해석한 책도 있음
리비전 번호 (rivision %d) : 변경들의 논리적인 증가, 0부터 새로운 변경 집합이 발생하면 1 증가
저장소 (repository) : 여러 가지 버전들을 저장하는 하나의 장소
작업본 (working copy) = 작업 디렉토리 (working directory) = 작업장 (workspace) : 저장소의 파일들은 직접 변경할 수 없다. 변경하기 위해서는 저장소의 파일들을 작업하는 컴퓨터 시스템(즉, 로칼)으로 받아 사용해야 한다. 이런 저장소의 파일들이 로칼에 저장되는 공간을 workspace라고 한다.
체크 아웃 (check out) : 작업장을 처음 사용하기 위해서는 저장소에서 필요한 파일들을 받아야 한다. 처음으로 작업장에 파일을 채우는 과정을 "체크 아웃"이라 한다. 체크 아웃(쉽게 다운로드)을 통해 작업장에 최신 파일이 저장된다. 체크 아웃의 주어를 "파일들"이라고 생각하면 이해가 쉽다. 파일이 호텔(=저장소)에 들어가 숙박(=저장) 후 호텔을 나와 직장(=작업장)에 일하러 가기 위해 프런트에서 "체크 아웃"한다고 생각해보자. 그러면 이해가 쉽다.
커밋 (cummit) : 작업 후에 작업장의 파일은 변경된다. 이 변경된 파일들을 다시 저장소에 저장하고 싶을 때, 저장소에 다시 올려 보내는 것(쉽게 업로드)을 '커밋'이라 한다. 커밋하게 되면 리비전의 번호가 증가하게 된다.
갱신 (update) : 지난 작업을 마치고 커밋한 이후에 다른 사람이 저장소의 파일을 변경(커밋)할 경우가 있다. 있든 없든, 변경 여부를 확인하기 위해(=변경 여부를 작업장에 반영하기 위해) 작업장의 파일들을 갱신 하는 과정을 거친다. 이를 체크 아웃이라고 설명하는 책, 문서 등등도 있다.
태그 (tag) : 특정 시점(리비전)에 태크(=이름)을 부여하여 기억하기 쉽게 할 수 있다. 그 태크를 이용해서 체크 아웃할 수 있다.
체크 인 (check in) : commit
Import : 저장소에 파일들을 집어 넣는다. svn import 명령
차이 (diff) : 리비전 간의 코드의 차이점, 작업중인 버전과 HEAD(=저장소의 최신버전)을 비교할 때 [ + ] 기호는 작업장에서 변경된 부분, [ - ] 기호는 다른 사용자에 의해 변경된 부분을 표시하는데 사용
svn diff 명령
패치 (patch) : svn diff 명령의 출력을 파일에 저장하면 그 자체가 패치다. 패치를 이용한 갱신은 patch 명령
------------------------------------------------------------------------------------
CVS와 SVN의 차이 외
리비전 범위 차이
- CVS는 파일마다 리비전의 번호를 매긴다. 반면, SVN은 저장소 전체의 리비전 번호를 매긴다. 예를 들어, 소스 파일 하나만 변경한다면 CVS는 그 파일의 리비전만 올라가는 반면, SVN은 파일마다 리비전 번호를 매기지 않기에 CVS의 모든 파일의 리비전 번호가 증가하는 것처럼, 저장소 리비전 번호가 증가한다. SVN에서 각 파일마다 변화를 확인하기 위해서는 log 명령을 사용한다.
서브버전의 충돌 정책
- 일단 각자 파일을 수정하고, 혹시 충돌이 생기면 그 때 해결하는 방식. 자동적으로 병합 되지 못하는 변경 -> 충돌 -> 사용자 간 해결 노력
[출처] 5. Subversion의 용어들 / cvs와 svn의 차이|작성자 가루비누