cvs使用
システムのCVSアクセスを設定した後、処理するモジュールをチェックアウトします.
テクニック
$CVSROOT
環境変数を設定する必要があるかどうか、またはコマンドラインオプション-m
repository
については、現在の作業ディレクトリにCVS/
サブディレクトリがあるかどうかを確認する必要があります.CVS/
サブディレクトリがある場合、CVSは、$CVSROOT
または-m
コマンドラインオプション設定を無視します.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)
ブランチとして検出できるのは、
Existing Tags
(既存のマーカー)に「ブランチ」と表示されているマーカーのみです.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
注意
admin
コマンドを使用する前に、ファイルはCVS倉庫にチェックインされている必要があります.キーワード拡張は、倉庫にコミットするのではなく、ファイルがチェックアウトされ、ローカルディレクトリにコピーされたときに行われるため、エラーは発生しません.バイナリファイルの復元
バイナリファイルを倉庫にチェックインすると、チェックアウト時に破損していることがわかります.焦らないでください.上記の
admin
コマンドを実行してからローカルファイルを削除し、再度チェックアウトすればよい.10.4.6.ファイルの削除
モジュールがファイルを必要としない場合は、
remove
コマンドを使用して削除し、commit
コマンドを使用して削除をサーバにコミットします.モジュールの現在のバージョンでファイルが削除されても、そのファイルのコピーはサーバに保持され、add
コマンドでいつでもリカバリできます.$
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
競合を解決するには、ファイルを開き、
<<<<<<<
を検索して、どのバージョンが正しいかを判断します.例:
<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>
<<<<<<<
と=======
の間の内容は、作業ディレクトリに既存のものです.=======
と>>>>>>>
の間はサーバ上のコンテンツです.ファイルを変更し、競合を解決してコミットします.
10.4.9.小結
すべてのコマンドは、現在のディレクトリが正しいと仮定します.
コマンド#コマンド#
説明
cvs checkout <module-name>
またはcvs co<module-name>
<module-name>
という のディレクトリを し、モジュールの をディレクトリに します.cvs co -d <directory>
-r <branchname>
<module-name>
<directory>
ディレクトリを し、<module-name>
モジュールの<branchname>
ブランチをディレクトリに します.cvs update
またはcvs up
サーバから へのファイルの cvs add <filename>
CVSサーバにファイル「filename」を cvs commit -m "My message" <filename>
ローカルコンピュータ のファイル<filename>
を として cvs log <filename>
ファイル<filename>
のコミット の cvs status <filename>
ファイルのステータスを します.Locally Modified
と ています.cvs status -v <filename>
ファイルの のラベルとブランチの cvs diff <filename>
ファイルの バージョンとブランチの バージョンの いを cvs diff -r1.1 -r1.2 <filename>
ファイル1.1と1.2のバージョンの いを
10.1. なCVSコマンド
システムのCVSマニュアルを してください. は/usr/share/doc/cvs-<version-number>
/cvsです.ps(CVSバージョンが なる があります).CVSホームページにアクセスすることもできます. はhttp://www.cvshome.org/.