일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 허드슨 포트 변경
- eclipse 폰트
- 화면보호기 실행 방지
- Spring Annotation
- 시퀀스 초기화 프로시져
- 엑셀 UPDATE
- JSP Standard Tag Library (JSTL) Tutorial
- javascript 낙타
- eclipse properties
- jquery_cheat_sheet #jquery_quick_api_reference
- 폴더만 남기고 파일만 삭제
- javascript Camel
- DIV 팝업 이외 영역 클릭 시 팝업 닫기
- 뒤로가기 방지
- jQuery 백스페이스
- 전화번호 형식 자동 변환
- 트리거 이벤트
- jquery_api #jquery #api
- ajax 배열 파라미터
- #오라클 데이터 복구
- 여러줄 한줄로
- 근무날짜 경력계산
- i_tail
- 팝업 종료
- 스킵 네비게이션
- css 말줄임
- eclipse 다국어
- 탭과 클릭 focus 이벤트 구분
- ajax 배열
- taglib 만들기
- Today
- Total
Hi~ Summers!!
CVS 기본사항 본문
- 개요
- 용어해설
- 신규 모듈을 시작하기
- CVS로 부터 신규 모듈을 얻기
- CVS로부터 다른 개발자의 수정사항을 얻어내기
- 충돌(Conflict)를 해결하기
- CVS로 수정된 사항을 전송하기
- 변경사항 확인하기
- 태그 추가하기
- 화일/디렉토리를 추가하기
- 화일/디렉토리를 제거하기
- 화일/디렉토리를 이동 혹은 이름변경하기
- 브랜치 생성
- 작동중인 브랜치 선택하기
- 브랜치로 부터 병합하기
- 메인 개발 라인으로 복귀하기
- 누가 화일을 수정하고 있지?
- 부록 A: FAQ
- 부록 B : CVS와 Microsoft Visual Source Safe와 다른 점은 무엇인가?
1 개요
이 문서는 wincvs 클라이언트를 매일 사용하는 데 있어 참고사항들을 정리한 것이다. 버젼 관리시스템과 CVS에 대한 소개글이 아니며, 상당히 개략적인 설명만을 담고 있다.이미 wincvs를 설치해 놓았다고 간주할 것이며, cvs 저장소에 대한 설정을 끝마친 상태라고 생각하도록 하겠다.
2 용어해설
cvs나 wincvs상에서 사용되는 용어들은 다른 소스저장시스템과는 다소 다를 수 있다. 혼란을 피하기 위해서 이 섹션에서는 가장 핵심적으로 사용되는 용어들에 대해 논하도록 한다. cvs를 사용하는 데 있어서는 다음과 같은 용어들에 익숙해질 필요가 있다.Checkout | 보통 저장소로부터 전체 모듈을 받는 작업을 말함. |
Commit | 저장소로 수정사항을 전송하는 것. |
Export | Refers to extraction of an entire module from the repository, without any CVS administrative files: export된 모듈은 cvs 제어를 받지 않는다. |
Import | 전체 디렉토리 구조를 전송함으로써 저장소에 새로운 모듈을 생성하는 것. |
Module | 디렉토리 계층. 프로젝트는 일반적으로 저장소내에 단 하나의 모듈로서 존재하는 것이 보통이다. |
Release | 전체 프로젝트의 버젼. |
Revision | 한개의 화일에 대한 버젼. |
Tag | 개발상의 특정 시점을 나타내는 화일들의 집합에 주어지는 문자열(명칭). |
Update | 저장소로부터 다른 개발자들의 수정사항을 얻는 것. 단지 개발자 개인 PC로의 지역복사만을 갱신한다. |
"revision", "release", "version", "tag"에 대한 더욱 자세한 설명은 CVS문서의 4장을 참조해라.
3 신규 모듈을 시작하기
버전관리하의 프로젝트를 얻는 것은 CVS용어로 import한다고 말한다. As the name implies, you should have something for the CVS server to import before thinking version control.cvs는 프로젝트 화일들을 재구성하는데 필요한 기능지원이 부족하므로, 신규 모듈을 import 하기 전에 관리계획을 잘 세운다면 import하는데 있어서 발생할 수 있는 골치아픈 일들을 줄일 수 있을 것이다.
import 명령을 하기전에 기본적인 것은 import할 모듈을 "깨끗한" 디렉토리 구조로 만드는 것이다. "깨끗하다"는 의미는 모듈내에 버젼관리를 하지 않아도 되는 화일들(예를 들면 컴파일러가 생성하는 화일들)이 모두 제거된 상태를 의미한다. 이것은 import전에 프로젝트가 어느정도 진행되었을 경우라면 특히 중요한 일이다. 여러분의 모듈에서 버젼관리를 받지 않아도 되는 화일들을 가지고 있을 수 있고, 이 화일들이 어쨌든 계속 사용될 수도 있다. 이런 경우에는 이 화일들을 import 전에 다른 곳에 옮겨놓았다가, import한 후 다시 되돌려 놓아야만 한다.
cvs는 빈 디렉토리를 존재하지 않는 것으로 간주한다는 것에 주의해라. 만일 화일이나 서브디렉토리가 없는 텅빈 디렉토리를 추가하려고 한다면, 더미 화일을 하나 만들어 놓을 필요가 있다. 일반적으로 이 디렉토리에 대한 설명등을 기술한 README.txt 같은 화일을 넣는 것이 관례이다.
한번에 저장소안에 원하는 화일들을 담고있는 디렉토리를 가지려면, wincvs를 사용해서 모듈을 import하기 위해 다음 단계대로 실행해라 :
- Admin -> Import module 메뉴를 선택한다.
- 화일대화상자가 나타나면, import하기를 원하는 프로젝트의 최상위 디렉토리를 선택해라.
- wincvs는 이제 지정한 디렉토리내의 모든 화일들을 훑게될 것이다. 필터 윈도우가 나타나면, 확장자별로 text/binary 설정을 지정하라.
- import 설정 대화상자에서는 모듈의 이름을 입력한다. 이것은 이 프로젝트에 있어서 개발자들이 채크아웃하는 최상위 디렉토리가 된다.
- vendor란에는 등록자의 이름이나 id, 회사명중 하나를 넣는다. (공백문자 금지)
- release란에 start라고 적는다.
- OK 버튼을 선택한다.
이제 wincvs는 cvs서버로 프로젝트 모듈을 import 할 것이다. import가 처리되는 동안에는 업로드되는 모듈이 업데이트되지 않도록 하는 것이 좋다. (작업하던 개발툴은 꺼두는 것이 좋겠다.) 이것은 import가 실행될 동안은 지역 복사본 모듈은 아직 버젼관리하에 있지 않다는 것을 의미한다. 버젼관리될 소스를 가지고 프로젝트를 시작하기 전에, 다음과 같은 사항을 꼭 해놓도록 한다:
- 소스의 원본을 따로 보관해둔다. 예를 들면, 디렉토리의 이름을 .old같은 것을 붙여서 rename하는 것도 좋은 방법이다.
- 별도의 지역 디렉토리를 만들고 채크아웃을 하여 cvs로 부터 초기버젼이 설정된 프로젝트를 받아놓는다.
- "중요하지않은" 화일은 디렉토리 바깥에 이동해놓는다.
이제 버젼관리 되는 프로젝트를 시작할 수 있게 되었다.
4 CVS로 부터 신규 모듈을 얻기
처음 CVS 서버로 부터 모듈을 얻는 작업을 CVS에서는 채크아웃이라고 한다. 저장소로부터 모듈을 채크아웃한다는 것은 모듈을 구성하는 디렉토리 트리 전체의 지역 복사본을 생성하는 것을 의미한다. 채크아웃을 실행하려면, 다음과 같이 실행한다:- CVS Admin 메뉴를 선택하여 Checkout module 메뉴를 선택한다.
- In the file dialog that pops up, choose the directory in which you want the module to be located. A directory named after the module will be created in the directory you supply, so you will normally want to provide the directory in which you keep all your projects.
- 채크아웃 설정 대화상자가 나타난다. "Enter the module name..." 필드에 모듈명을 입력한다. 모듈명은 대소문자구분이 있다는 것에 주의해라.
- Globals 탭을 선택하라.
- Set the Checkout read-only according to what the project leader tells you (see below).
- Press the OK button.
If you state that Checkout read-only should be in use, you will have to tell wincvs which files you intend to edit before editing them. This may be cumbersome, but it enables other developers to track who is currently editing given files. See the section Who's Editing that File? for more information.
5 CVS로부터 다른 개발자의 수정사항을 얻어내기
때로는 다른 사람이 작업해놓은 변경사항만을 여러분의 지역복사본에 병합시키기위해 가져오고 싶을 때가 있을 수도 있다. 지역복사본으로 현재 서버로부터 변경사항을 가져오는 것을 CVS에서는 갱신(Update)라고 한다. 갱신작업은 단일 화일이나 선택된 여러개의 화일 묶음, 하위디렉토리까지 포함한 특정 디렉토리가 될 수도 있다. 갱신작업을 수행하려면 다음단계를 밟아라.- update하기위한 디렉토리나 화일(들)을 선택해라.
- 선택된 부분에서 오른쪽 버튼을 눌러서 "Update selection"을 선택한다.
- "Create missing directories that exist in the repository" 옵션이 채크되어 있도록 설정한다.
- OK 버튼을 선택한다.
다른 개발자에 의한 수정사항은 이제 지역화일에 병합되며, 지역화일에 실행했던 변경점들은 그대로 유지된다. 저장소는 update에 의해서 영향받지 않는다.
업데이트 동안에 만약 충돌에 대한 메세지를 받았다면, 다음 장을 읽어보도록 해라.
6 충돌(Conflict)를 해결하기
간혹가다가 CVS서버는 화일을 update 하는 도중에 충돌메세지를 나타낼 때가 있다. 충돌은 한명이상의 개발자가 저장소의 동일한 화일의 동일한 부분을 변경했을때 발생한다. CVS서버는 버젼관리만 할 뿐, 프로젝트에 대해 관여하지는 않으므로, 이 충돌은 개발자들이 풀 수 있도록 그냥 내버려두게된다. 충돌이 일어나면, 해당화일을 열어서 <<<<<<< 문자열을 우선 찾아라. 충돌 부분은 다음과 같이 표시된다. <<<<<<< filename현재 개발자가 고친 부분
=======
저장소로부터 합쳐진 부분
>>>>>>> revision
저장소에서 넘어온 코드와 자신이 수정한 코드를 비교해서 알맞은 수정을 가해라. CVS 서버가 표시해놓은 문자열을 지우고, 저장소에 수정한 내용을 commit하면 된다.
7 CVS로 수정된 사항을 전송하기
개발자가 개인적으로 수정한 내용을 저장소에 반영하려면, commit이라는 명령을 사용한다.- commit하기전에, update를 실행해서 수정한 화일들에 대한 충돌이 없는지 찾아봐라. "CVS로부터 다른 개발자의 수정사항을 얻어내기"를 참조해라.
- commit처리할 디렉토리나 화일(들)을 선택해라.
- 마우스 오른버튼을 클린한후, 나타나는 메뉴에서 "Commit selection"을 선택해라.
- commit settings 대화상자가 나타나면, 로그메세지를 입력한다. 이것은 옵션사항이며, 변경사항을 차후에 log를 통해 빨리 확인하려면 적어놓는 것을 추천한다.
- ok 버튼을 누른다.
commit 명령은 저장소에 추가시킬 새로운 화일들을 자동적으로 추가하지는 않는다는 것을 명심해라. "화일과 디렉토리를 추가하기"를 참조하라.
8 변경사항 확인하기
wincvs는 화일(들)이나 디렉토리의 상태, 로그기록, 변경점 검사등등을 열람하는데 사용될 수 있다.- 세부사항을 검사하고싶은 디렉토리나 화일(들)을 선택한다.
- 오른쪽 마우스 버튼을 클릭해서 "Diff selection", "Log selection", "Status selection", "Graph selection"중 하나를 선택한다.
- 만일 대화상자가 나타나면, 필요한 옵션을 지정하고 OK를 선택한다.
다음은 변경상태를 조회하는 기본적인 명령들에 대한 간단한 설명이다.
Diff | 현재 지역 하드디스크에 저장되어있는 화일과 이전 버젼 혹은 현재 저장소에 있는 화일과의 변경점을 보여준다. (이 CVS의 가장 핵심기능일 것이다.) |
Log | 로그 메세지나 수정날짜, 태그, 수정작업자명등등을 보여준다. |
Status | 지정한 화일들의 수정사항의 요약상태를 보여준다. 이상태에서 diff나 log명령을 바로 실행할 수도 있다. |
Graph | 하나의 화일에 대한 수정단계를 그래프형태로 보여준다. |
9 태그 추가하기
At a given stage of development, giving one or more files a common label to refers to their revisions, is known as tagging those files. Tagging is typically used on entire modules, so that the current state of the module can be reconstructed in the future. This kind of tagging should always be done on project deliverables, and before starting major changes.To tag one or more files or directories with a label, do the following:
- Select the directory, file or files that you want to tag.
- Click the right mouse button on the selction, and choose the Tag selection -> Create a tag menu item.
- Enter the label in the New tag name input field. (See below for restrictions on tag names.)
- Press OK button.
태그 명을 정할때에는 CVS는 매우 제약을 많이 하는 편이다. 태그명은 반드시 문자, 숫자, 하이픈(-)문자, 밑줄(_)문자밖에 사용할수없다. .문자와 공백문자조차도 포함할 수 없다는 것에 주의하자. 버전번호를 굳이 표시하고 싶다면, .문자를 -로 변경하는 것이 좋을 것이다. 태그명은 두가지가 예약되어있다. "HEAD"는 저장소에 저장된 가장 현재 버젼을 의미하고, "BASE"는 가장 최근에 채크아웃했던 소스의 버젼을 나타낸다. 다시 말하면, "HEAD"는 작업한 가장 최신 버젼의 소스를 가져오게 되며, "BASE"는 가장 최근에 자신이 작업한 버젼을 나타낸다.
10 화일/디렉토리를 추가하기
저장소에 추가하기를 원하는 신규 화일들을 CVS 서버상에 추가하고자 할 때는, CVS 서버에 반드시 등록을 해주어야한다. 만약 CVS 제어하에 있지 않은 화일들을 디렉토리가 담고 있다면, 그 화일에 대한 작업 이전에 그 화일을 등록시켜야 버젼관리에 대한 효과를 볼 수 있다. 화일이나 디렉토리를 추가하려면 다음과 같은 단계를 밟아준다.- 추가하고자 하는 디렉토리나 화일(들)을 선택한다.
- 선택한 곳에서 오른쪽 버튼을 눌러 나타나는 메뉴상에서, "Add selection" 또는 "Add selection binary" 메뉴를 선택한다. text화일이 아닌 경우에는 binary를 선택하는 것이 좋다. 아니면 CVS에 의해 화일이 깨질 가능성이 있다!
- 추가된 화일들은 수정되었다는 표시가 되어있을 뿐이다. 이것을 저장소에 완전히 추가하려면, commit 명령을 실행해라.
개별 화일이 아닌 디렉토리 전체를 추가하고자 한다면, 위 방법은 정말로 성가신 방법이 될 수 있다. (작업이 재귀적으로 하위디렉토리까지 작업을 해주지 않기 때문이다.) 이럴때에는 import명령을 실행하는 것이 좋다.
- "Cvs Admin" -> "Import module" 메뉴를 선택한다.
- 화일 대화상자가 나타나면, import할 디렉토리를 선택한다. (선택하면 열려져있는 폴더 상태로 아이콘이 변한다.)
- wincvs는 이제 디렉토리 트리내에 있는 화일들중 이진(binary)화일들을 식별하려할 것이다. filter 윈도우가 나타나면, 정확한 text/이진 설정을 화일 확장자별로 선택해준다.
- "Import settings" 대화상자가 나타나면, 디렉토리명을 포함한 모듈명을 적어넣어라. 만약 모듈명이 "myproject"라고 하고 "source/utils" 에 해당하는 내용을 import하려한다면, "Select the module name..." 입력란에는 "myproject/source/utils"라고 적어넣으면된다. 대소문자구분을 한다는 것과 이 아닌 /를 사용한다는 것in the Select the module name... input field.
- Type your name, or your company name (no spaces) in the Vendor tag field.
- Type start in the Release tag field.
- OK button을 누른다.
wincvs will now import your entire directory hierarchy to the CVS server, under the given module. Note that nothing will be changed in your local files during the import operation. This means that your local copy will not be under version control after the import. To have the newly imported hierarchy under version control, obtain a copy of it from the repository:
- Move your original hierarchy away, eg. by renaming the directory you just imported to *.old using Windows' file explorer.
- In wincvs, select the directory above the one you just added. Right click on it, and choose Update selection.
- Make sure Create missing directories that exist in the repository is checked.
- Press the OK button.
wincvs will now give you a fresh, version controlled copy of your hierarchy.
11 화일/디렉토리를 제거하기
To remove files, you first schedule the files for removal, and then commit the change:- Select the file or files that you want to remove.
- Click the right mouse button on the selction, and choose the Remove selection menu item.
- As the files are only marked for removal, you have to commit them to remove them from the repository. See Sending Your Changes to CVS if you don't know how to commit.
The files will now be removed from the repository. Note that files are not physically removed, but rather marked as "dead". By this way it will still be possible to retrieve the files if you choose to check out an old version of the module.
Removing directories is another story. CVS will optionally remove empty directories when you update one of its parent directories. If you want to get rid of an empty directory, do the following:
- Select the parent directory of the empty directory you want to remove.
- Click the right mouse button on the selction, and choose the Update selection menu item.
- Select the Globals tab.
- Make sure Prune (remove) empty directories is checked (it is by default).
- Press the OK button.
The directory will be removed if all its files were previously removed from your local copy and from the repository.
12 화일/디렉토리를 이동 혹은 이름변경하기
Operation of moving or renaming files or directories is not available in CVS. This is one of CVS's shortcomings. To simulate moving or renaming, you have to combine remove and add operations. See Adding Files and Directories and Removing Files and Directories.13 브랜치 생성
버전 콘트롤 시스템의 기능중 하나는 개발선상에서 변경사항을 고립시키는 기능이다. 이 별도로 생성된 개발선을 브랜치라고 한다.브랜치를 생성하려면 다음과 같이 실행한다:
- 브랜치를 생성하기를 원하는 디렉토리나 화일들을 선택한다.
- Modify 메뉴에서 Create a Brench를 선택한다.
- New branch name 항목에 테그명을 적는다. 적법한 테그명을 적어야한다는 것에 주의해라..
- Check that the files are unmodified before branching 옵션을 켠다.
- OK 버튼을 선택한다.
이제 지정한 이름으로 저장소에 신규 브랜치가 생성되었다. 주의 : 브랜치는 저장소내에서만 생성된다. 새로 생성된 브랜치로 작업을 시작하려면, 다음 단계를 읽어보도록 해라.
14 작동중인 브랜치 선택하기
기본 개발선대신에 브랜치상에서 작업을 시작하려면, 여러분의 프로젝트 지역 복사본을 해당 브랜치와 바인딩 해야만 한다. 이것은 update나 commit과 같은 명령때문에 확실하게 지정이 되어야한다. 가급적이면 주 개발선보다는 브랜치에서 개발하는 것을 추천한다.다른 브랜치로 지역 복사본을 옮기려면 다음과 같이 실행한다 :
- 프로젝트의 최상위 디렉토리를 선택한다. (만약 디렉토리들과 화일들이 브랜치의 일부라는 것을 여러분이 알고 있다면, 대신에 이것들을 선택해도 무방하다.)
- 오른 버튼 메뉴를 불러서 Update selection 메뉴를 선택한다.
- Create missing directories that exist in the repository 옵션을 채크한다.
- Sticky options 탭을 선택한다.
- Retrieve rev./tag/branch 채크박스를 켠다.
- Retrieve rev./tag/branch 입력항목에서 변경하고자 하는 브랜치명을 넣는다.
- OK를 선택한다.
이제 원하는 브랜치로 여러분의 작업 복사본의 필요한 업데이트와 이동을 실행할 것이다. update는 화일의 추가와 삭제작업을 포함한다.
CVS는 브랜치에 의해 영향받은 화일들에 sticky 테그로 알려진 것을 적용한다. status 명령들을 사용하여 이 sticky 테그들을 열람하는 것이 가능하다. sticky 테그를 제거하고 원래의 개발선 상으로 복귀하는 것은 "메인 개발라인으로 복귀하기"를 참조하라.
15 브랜치로 부터 병합하기
브랜치상에서 변경한 내용들에 만족했을 경우, 여러분은 이 변경사항들을 주 개발라인에 적용하려고 할 수 도 있다. 하나의 브랜치에서 다른 브랜치로 변경사항을 합치는 작업을 병합(merging)이라고 한다. 브랜치를 병합하기 위해서 다음을 따라해라.- 병합하려는 브렌치의 지역 복사본을 현재 작업 지역복사본으로 지정해라. "작동중인 브랜치 선택하기"를 참조하라.
- 프로젝트의 최상위 디렉토리를 선택해라.
- 오른 버튼 메뉴를 불러서 Update selection 메뉴를 선택한다.
- Create missing directories that exist in the repository 옵션을 채크한다.
- Merge options 탭을 선택하라.
- Only this rev./tag 라디오 버튼을 선택하라.
- Only this rev./tag 입력항목에 병합하길 원하는 브랜치명을 넣는다.
- OK 버튼을 선택한다.
지정한 브랜치의 모든 변경점들이 이제 지역 복사본에 병합되었다. 이제 commit을 수행하면 현재 내용이 저장소에 확정되게 된다.
중요 주의사항 : 위에서 설명한 병합기능은 브랜치의 시작으로부터 변경점을 병합하려고 시도하게 된다. 만약 두번째로 이 병합기능을 수행하는 것이라면(가장 최근 병합이후의 브랜치상의 변경점을 병합하려는 것이라면) 시작점부터 병합하는 처리는 여러분이 원하는 것이 아닐 것이고 프로젝트는 곤란한 상태에 빠질 것이다. 이 문제를 피하기 위해서는, 여러분은 매번 병합때마다 새로운 테그명으로 브랜치를 하는 것이 필요하다.
16 메인 개발 라인으로 복귀하기
브랜치상에서 개발하는 것을 멈추고 주 개발라인으로 여러분의 지역 복사본의 내용을 변경하려면, wincvs로 하여금 모든 sticky 테그를 삭제해야만 한다. sticky 테그를 제거하고, 현재 지역복사본을 주 개발라인의 내용으로 바꿀려면 다음과 같이 실행해라.- 프로젝트의 최상위 디렉토리를 선택해라.
- 오른 버튼 메뉴를 불러서 Update selection 메뉴를 선택한다.
- Create missing directories that exist in the repository 옵션을 채크한다.
- Reset any sticky date/tag/'-k' 옵션을 채크한다.
- OK 버튼을 선택한다.
wincvs는 이제 지역 복사본을 현재의 주 개발라인으로 맞추어 변경했다. 방금전까지 작업했던 브랜치는 아직도 저장소내에 남아있으며, 언제든지 원하면 다시 선택하여 작업하는 것이 가능하다.
17 누가 화일을 수정하고 있지?
It is possible to ask CVS who is currently editing a file, but it only works if the developers announce to CVS when they intend to edit a file. This model is known as the IR CVS model (well, that's actually an internal joke at Computas), and it should be decided at project startup if this model is to be used.To use the IR CVS model, developers should check out the module read only. It can be done by checking Checkout read-only in the Globals tab of every wincvs dialog.
To edit a file, do the following:
- Select the file you want to edit.
- Click the right mouse button on the selction, and choose the Monitors selection -> Edit selection menu item. (Alternatively, use the shortcut in the toolbar.) The read-only flag will be removed, and the CVS server registers you as an editor of the given file.
- Edit the file.
- Commit the file as described in Sending Your Changes to CVS.
When you commit the file, the CVS server assumes you are no longer editing it, and wincvs will make the file read only again. If you did not make any changes, a commit will not tell the CVS server that your have finished editing it. In that case you should rather do the following:
- Select the file you marked for editing.
- Click the right mouse button on the selction, and choose the Monitors selection -> Unedit selection menu item. (Alternatively, use the shortcut in the toolbar.)
And now, back to the original question: "Who's editing that file?" To list the editor(s) if any of a file, do this:
- Select the file you are curious about.
- Click the right mouse button on the selction, and choose the Monitors selection -> Editors of selection menu item.
wincvs will now list the known editors of the file.
18 부록 A: FAQ
18.1 update중에 보이는 의문의 글자들이 무엇을 의미하는가?
CVS 메뉴얼의 update 출력부분을 참고해라.18.2 서버의 시각이 틀렸다! ID 태그와 로그들이 틀린 시각으로 보이고 있다!
이것은 "기능"이다. CVS는 언제나 로그처리에 UTC를 사용한다.19 부록 B : CVS와 Microsoft Visual Source Safe와 다른 점은 무엇인가?
CVS와 wincvs는 Visual Source Safe (VSS)와 여러가지 면에서 다르다. 가장 명백한 차이점은 작업중인 화일들을 잠글 필요가 없다는 것이고, VSS는 기본적으로 이 기능을 수행한다는 것이다. 사실, CVS 문서조차도 화일 잠금을 사용하지 말 것을 권장하고 있다. 몇몇 작업자들이 동시에 같은 화일을 변경하는 일은 매우 드문 경우이기 때문에, CVS는 일반적인 방법으로 이들의 변경점들을 병합한다. 만약 둘 이상의 작업자들이 같은 몇 라인의 같은 소스부분을 수정했다면, CVS는 충돌(conflict)을 보고할 것이고, 화일내에 그 위치를 추가할 것이며, 그 부분에 대한 결정을 작업자들의 몫으로 돌리게 된다. 이런 충돌은 매우 드문일이며, 주로 개발자들의 대화부족으로 일어나는 것이 보통이다. (예를 들면, 두 개발자가 같은 버그를 고치고 있는 경우를 들 수 있다).또다른 중요한 차이점은 VSS는 프로젝트를 서버의 관점에서 보며, cvs는 클라이언트 관점에서 본다는 점이다. 실전에서 이것은 VSS와는 달리, wincvs는 update를 하거나 지정한 화일들에 대한 확실한 질의를 하지 않으면 저장소의 변경사항을 알려주지 않는다는 것이다. wincvs내에 보고된 변경사항은 가장 최근에 checkout, update, commit을 했을 경우에만 여러분이 수행한 변경점들을 반영한다.
CVS는 VSS처럼 "비쥬얼"하지 않다. wincvs를 사용하면, CVS가 지난 몇년동안 커맨드 라인 기반의 프로그램이었고 wincvs는 그것을 사용하기 쉽게 포장한 것에 지나지 않다는 것이 아주 명백히 드러난다. 우리들 중의 몇몇은 경험적으로 숙련된 사용자들이 선호하는 방식인 wincvs의 이런 단순한 접근을 선호하며, 몇몇은 아주 싫어한다. 여러분이 싫어하는 쪽에 속한다면, 이 프로그램을 개선해보고 여러분의 변경점을 모두에게 배포하기 바란다.