기본 CVS 명령
10.4. 기본 CVS 명령
시스템 의 CVS 접근 을 설정 한 후 처리 할 모듈 이 검출 되 었 습 니 다.
기교.
환경 변 수 를 설정 해 야 하 는 지, 명령 행 옵션
$CVSROOT -m 을 설정 해 야 하 는 지 에 대해 서 는 현재 작업 디 렉 터 리 에 하위 디 렉 터 리 가 있 는 지 확인 해 야 합 니 다.하위 디 렉 터 리 repository 가 있 으 면 CVS 는 명령 행 옵션 설정 을 무시 합 니 다.10.4.1. 검출 모듈
모듈 을 한 번 만 검출 하 십시오.모듈 이 로 컬 에 검출 된 후, 그것 은 줄곧 거기에 있 었 다.
모듈 을 찾 으 려 면 다음 명령 을 실행 하 십시오:
$cvs co<module-name>
例如,要检出 example-tutorial 模块,先进入工作目录,然后执行下面的命令:
$cvs co example-tutorial
当前目录下将新建一个名字是 example-tutorial/ 的子目录。
如果检出模块时没有指定分支名称,默认就是 CVS 中模块的 HEAD 分支。
10.4.1.1. 检出模块的分支
可以将 CVS 分支视为一篇手册的某个版本,或是一个文件的不同版本。
要检出模块的分支,运行下面的命令:
$cvs co-d<directory>-r<branchname><module-name>
将创建名为 <directory> 的目录, 模块 <module-name> 的 <branchname> 分支的文件将被复制到这个目录中。
例如,要检出 mymodule 模块的 BRANCH-VERSION-1.2 分支,运行命令:
$cvs co -d mymodule-1.2 -r BRANCH-VERSION-1.2 mymodule
模块的 BRANCH-VERSION-1.2 分支将被检出到 mymodule-1.2 目录中。
要查看文件有哪些分支和标记,运行命令:
$cvs status-v<filename>
例如,文件 foo.sgml 的状态如下:
===================================================================
File: foo.sgml Status: Up-to-date
Working revision: 1.47
Repository revision: 1.47 /cvs/docs/custom-guide/rhl-cg-en.sgml,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
Existing Tags:
BRANCH-VERSION-1.2 (branch: 1.25.2)
CVS/ (기 존 태그) 에 '분기' 로 표 시 된 태그 만 분기 로 검출 할 수 있 습 니 다.10.4.2. 파일 업데이트
모듈 에 있 는 파일 의 최신 버 전 을 가 져 오 려 면 모듈 파일 을 포함 하 는 디 렉 터 리 로 전환 하고 명령 을 실행 하 십시오.
$cvs update
模块所有文件的最新版本将下载到本地。如果您看到了文件冲突提示,请参考 제. 10.4.8 충돌 해결。
10.4.3. 提交文件
在本地修改模块的文件之后,将它们提交,以在 CVS 服务器上保存更改:
$cvs commit-m"some log message"filename
| 注意 | |
|---|---|
| 如果您想用喜欢的文本编辑器来撰写日志信息,并且已经定义了 $VISUAL 或 $EDITOR 环境变量,就可以忽略 |
日志信息应当尽可能有描述性,这样您和共同作者都可以了解做过了哪些修改。如果日志消息是 updated some files(更新了一些文件),那它无法描述修改了什么,将来对您毫无用处。如果您修正了一个错误,应当包含 Bugzilla 引用。
<filename> 可以是一个文件名,一系列以空格分隔的文件名,或者一组以通配符指定的文件名,类似 *.png 或 foo-*.sgml。
如果在 commit 命令中没有给出文件名或通配符,所有修改都会被提交到服务器。这个命令是递归的,模块中任何子目录的修改也都会被提交。不带文件名执行 commit 命令时要小心,因为您可能不记得改过了什么。
如果您看到了文件冲突,请参考 제. 10.4.8 충돌 해결。
10.4.4. 添加文件
要向模块添加文件,在本地目录中创建这个文件,然后执行下面的命令:
$cvs addfile-to-add
添加文件之后,必须 commit(提交)添加的文件到服务器:
$cvs commit-m"some log message"file-to-add
10.4.5. 管理二进制文件
通常存档的文件是简单的文本文件,但是有时也会存档二进制文件。CVS 程序可以识别大多数文件扩展名,类似 .png 或 .jpg,这样就不会做坏事。
当文件被检出时,cvs 扫描它,查找特殊的关键字,类似 "$id:$",然后替换为相应的值, 例如版本号。
关键字替换通常会损坏二进制文件,因此如果 CVS 无法正确识别文件为二进制文件,必须关闭替换。标识文件为二进制就关闭了关键字替换,输入命令:
$ cvs admin -kk filename CVS/ 명령 을 사용 하기 전에 파일 이 CVS 창고 에 검색 되 어야 합 니 다.이 경우 오류 가 발생 하지 않 습 니 다. 키워드 확장 은 파일 이 검출 되 고 로 컬 디 렉 터 리 로 복사 되 었 을 때 진행 되 는 것 이지 창고 에 제출 되 었 을 때 가 아 닙 니 다.바 이 너 리 파일 복구
바 이 너 리 파일 을 창고 에 검사 하면 검출 할 때 손상 되 었 으 니 조급해 하지 마 십시오.위의
$CVSROOT 명령 을 실행 하고 로 컬 파일 을 삭제 한 다음 에 다시 검출 하면 됩 니 다.10.4.6. 파일 삭제
모듈 에 파일 이 더 이상 필요 하지 않 으 면
-m 명령 을 사용 하여 삭제 한 다음 Existing Tags 명령 으로 서버 에 제출 하 는 것 을 삭제 합 니 다.모듈 의 현재 버 전이 파일 을 삭제 하 더 라 도 이 파일 의 사본 은 서버 에 남아 있 으 며 언제든지 admin 명령 으로 복구 할 수 있 습 니 다.$cvs rm -ffile-to-remove
删除文件后,必须 commit(提交)删除:
$cvs commit-m"some log message"file-to-remove
在用 commit 命令提交删除时不能使用通配符。必须明确地指定文件名。
如果需要重命名某个文件,最好在 CVS 服务器上重命名它,这样文件的历史可以保留下来。如果需要重命名文件,就向 [email protected] 发送一封邮件,写明要重命名的文件。
10.4.7. 文件的状态
有时需要查看模块中文件的 status(状态)。执行命令:
$cvs statusfilename
仓库文件的状态报告如下所示:
-
Up-to-date -
您的文件版本正是 CVS 服务器上的最新版本。
-
Locally Modified -
您已从服务器上更新了最新的版本,并且做了修改。
-
Locally Added -
您使用
cvs add命令添加了文件,但是尚未提交文件的添加。 -
Locally Removed -
您使用
cvs remove命令删除了文件,但是尚未提交文件的删除。 -
Needs Checkout -
服务器上有新版本的文件,您需要更新。尽管状态中说,需要检出,实际的意思是,您需要用
cvs update命令更新文件。 -
Needs Patch -
本地文件需要打补丁以更新到服务器的最新版。执行
cvs update命令来解决。 -
Needs Merge -
服务器上有更新的版本,您的本地版本却做了未提交的修改。这种情况可能经常发生,如果您没有获取最新版本就进行修改的话。
-
File had conflicts on merge -
类似
Needs Merge,但是当您执行cvs update命令时,将无法自动解决冲突。关于如何解决冲突请参考 제. 10.4.8 충돌 해결。 -
Unknown -
CVS 服务器不知道文件的任何信息。它没有被本地添加或删除,也从未提交到服务器上。这种情况通常发生在不应被提交到 CVS 服务器的文件上,例如
generated-index.sgml,或者是想添加到仓库但尚未执行cvs add命令的文件。
10.4.8. 解决冲突
如果您修改了一个文件,而另一个人修改了同样的区域并且先提交了,您在提交文件或更新本地目录时就会看到类似下面的消息:
RCS file: /cvs/docs/module-name/filename.sgml,v
retrieving revision 1.12
retrieving revision 1.13
Merging differences between 1.12 and 1.13 into filename.sgml
rcsmerge: warning: conflicts during merge
cvs server: conflicts found in filename.sgml
C filename.sgml
충돌 을 해결 하려 면 파일 을 열 고 검색
admin 한 다음 에 어떤 버 전이 정확 한 지 판단 해 야 합 니 다.예 를 들 면:
<para>
Some sentence.
<<<<<<< filename.sgml
A sentence that was changed in the working copy.
=======
A same sentence that was changed differently and committed.
>>>>>>> 1.13
</para>
remove 와 commit 사이 의 내용 은 업무 목록 에 있 는 것 이다.add 와 <<<<<<< 사 이 는 서버 의 내용 이다.파일 을 수정 하고 충돌 을 해결 한 후에 제출 합 니 다.
10.4.9. 작은 매듭
모든 명령 은 현재 디 렉 터 리 가 정확 하 다 고 가정 합 니 다.
명령 하 다.
묘사 하 다.
<<<<<<< 또는 =======모듈 내용 을 디 렉 터 리 에 저장 하기 위해 ======= 라 는 디 렉 터 리 를 만 듭 니 다.>>>>>>> -r cvs checkout <module-name> cvs co <module-name>
디 렉 터 리 를 만 들 고 <module-name> 모듈 의 cvs co -d <directory> 가 지 를 디 렉 터 리 에 놓 습 니 다.<branchname> 또는 <module-name>서버 에서 파일 을 최신 버 전 으로 업데이트 합 니 다.<directory>
파일 "filename" 을 CVS 서버 에 추가 합 니 다.<module-name>
로 컬 컴퓨터 의 파일 <branchname> 을 최신 버 전 으로 제출 합 니 다.cvs update
파일 보기 cvs up 의 제출 정보cvs add <filename>
파일 의 상태 보기, 유사 cvs commit -m "My message" <filename><filename>
파일 에 있 는 태그 와 분기 보기cvs log <filename>
파일 의 작업 버 전과 분기 의 최신 버 전의 차이 점 을 봅 니 다.<filename>
파일 1.1 과 1.2 버 전의 차이 점 보기
시계. 10.1. 기본 CVS 명령
시스템 의 CVS 매 뉴 얼 을 읽 고 더 많은 정 보 를 얻 으 십시오. 위 치 는 cvs status <filename> / cvs. ps (CVS 버 전이 다 를 수 있 습 니 다) 입 니 다.CVS 홈 페이지 도 방문 할 수 있 으 며 위 치 는 http://www.cvshome.org/ 입 니 다.