Develop and Download Open Source Software

View CVSの操作

category(Tag) tree

file info

category(Tag)
root
file name
cvs_operation
last update
2002-09-19 04:31
type
HTML
editor
Kenji Inoue
description
perldocjpプロジェクトで作業する上で必要なCVSの操作やコマンドの説明
language
Japanese
translate

CVSの操作

この文書はperldocjpプロジェクトで作業する上で必要なCVSの操作やコマンドを述べます。

この文書ではコマンドラインでのCVSの利用を想定しています。 WinCVSでは対応するコマンドがメニューにありますが、 TCLをインストールするとWinCVS上からコマンドラインでCVSを利用することもできます (なおその場合でもカレントディレクトリの指定はGUIで行います)。

作業の流れ

CVSの基本的な作業の流れは次の通りです:

  1. モジュールをリポジトリから作業コピーにチェックアウトする
  2. (新しいファイルやディレクトリを追加する場合は) addする
  3. 作業コピーのファイルを編集する
  4. 作業コピーの変更をコミットする
  5. (コミットでコンフリクトが起これば) 必要があれば話し合い、修正してコミットし直す
  6. (必要があれば) リポジトリの変更を取り入れたり確認するためにupdateする

チェックアウト

perldocjpプロジェクトのCVSで作業を始めるためには、 まずサーバ上にあるファイルを取得する必要があります。 この操作をチェックアウト(checkout)といいます。

全てのモジュールをチェックアウトするには、

cvs co -P all

とします (-Pオプションは空のディレクトリを作成しません)。 各モジュールや各ファイルを個別にチェックアウトしたい場合は、

cvs co -P docs meta

や、

cvs co docs/perl/5.8.0/perldelta.pod

とします。

なおモジュールの構成については別ドキュメント「CVSのディレクトリ構成」を参照してください。

新しいディレクトリやファイルの追加

ディレクトリ名やファイル名などのファイル構成については一定の規則があるので、 それらについては別ドキュメントを参照してください。

ここでは、例としてNet::IRCモジュール(このモジュールはPerlモジュールの意)の翻訳の追加を説明します。 それは次のようなファイル構成になっているとします:

  • docs
    • modules
      • Net-IRC-0.73
        • Connection.pod
        • DCC.pod
        • Event.pod
        • IRC.pod
  • meta
    • modules
      • Net-IRC-0.73.xml

これは最初からその構成でファイルを作成しても、 あらかじめ作成しておいたファイルをその位置にコピーしても構いません。

まずはNet-IRC-0.73.xmlを追加することにします。 カレントディレクトリをmeta/modulesに移して、次のコマンドを発行します:

cvs add Net-IRC-0.73.xml
cvs commit -m "Initial import" Net-IRC-0.73.xml

ファイルの追加の場合、最初のaddでは実際にはファイルは追加されず、次のcommitで追加が反映されます。 また-m "Initial import"はそのリビジョンでの更新履歴のメッセージを指定しています。

次にNet-IRC-0.73ディレクトリを追加することにします。 カレントディレクトリをdocs/modulesに移して、次のコマンドを発行します:

cvs add Net-IRC-0.73

ディレクトリの追加の場合、addにより即座にディレクトリの追加が反映されます。

最後にNet-IRC-0.73ディレクトリ内のファイルを追加しましょう。 カレントディレクトリをNet-IRC-0.73に移して、次のコマンドを発行します:

cvs add Connection.pod DCC.pod Event.pod IRC.pod
cvs commit -m "Initial import"

これは最初のメタ情報ファイルの追加と同じです。 commitで対象を明示しない場合、カレントディレクトリ以下の(CVS管理下にあるディレクトリの)更新されたファイル全てが対象になります。

コミット

作業コピーのファイルを変更すると、それを(サーバの)レポジトリに反映させる必要があります。 この操作をコミット(commit)といいます。 コミットするためには、例えば、

cvs commit -m "Translated the whole document"

とします。 ここでもしコンフリクトが起きれば、そのコンフリクトを解決した後、 再度コミットし直すことになります。

もし更新履歴に日本語を使いたい場合は、文字のエンコーディングはEUC-JPを使用してください。

コンフリクトの解決

プログラム開発ではなく文章翻訳という点に主眼を置いて述べます。

コンフリクトが起きた場合、まずはその問題が自分だけで自明に解決できるかを判断します。 もし自力で簡単に解決できるのであれば、修正したものをコミットしておき、 事後に他の翻訳者に連絡をするべきでしょう。 もし話し合いが必要であれば、コンフリクトした部分を元の文章とコミットしようとした文章を 2つとも(他の部分と区別がつくように)並列に書いておいてそれをいったんコミットしておき、 そして他の翻訳者と話し合って決定が成された後、要らない方を削除してから再コミットするべきでしょう。

なお、コンフリクトの事後ではなく、事前に代替案を提起する場合、 事前に他の翻訳者と話し合った後にコミットするべきです。

また、「他の翻訳者」と一律に述べましたが、実際には「みんなでよってたかって翻訳する」ものと 「メイン管理者が一人いて他の人がそれを手伝う」形のものとでは少し対応が異なるでしょう。 しかし、他の翻訳者と連絡を取り合うことが重要なことには変わりありません。

そういった連絡のためのメーリングリストとしてperldocjp-developがあります。

コンフリクトが起きた場合、作業コピーのファイルのコンフリクト部分は次のような形式になっています:

<<<<<<< ファイル名
  作業コピーの変更
=======
  リポジトリの変更
>>>>>>> レポジトリの最新リビジョン番号

これらの記号を手動で取り除くと、再コミットができるようになります。

作業コピーの更新

作業コピーをリポジトリの最新のものに更新するには、次のコマンドを発行します:

cvs update -dP

updateで対象を明示しない場合、カレントディレクトリ以下の(CVS管理下にあるディレクトリの)ファイル全てが対象になります。

.cvsrc

ホームディレクトリに以下のような設定を書いた.cvsrcというファイルを置いておくと、 各コマンドを発行するときに自動的に各オプションを付け加えてくれるので便利です。

cvs -q
update -dP
checkout -P

参考資料

  1. バージョン管理システムCVSを使う
  2. Open Source Development with CVS 日本語訳