기본 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 add
file-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 -f
file-to-remove
删除文件后,必须 commit
(提交)删除:
$
cvs commit
-m
"some log message
"file-to-remove
在用 commit
命令提交删除时不能使用通配符。必须明确地指定文件名。
如果需要重命名某个文件,最好在 CVS 服务器上重命名它,这样文件的历史可以保留下来。如果需要重命名文件,就向 [email protected] 发送一封邮件,写明要重命名的文件。
10.4.7. 文件的状态
有时需要查看模块中文件的 status(状态)。执行命令:
$
cvs status
filename
仓库文件的状态报告如下所示:
-
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/ 입 니 다.