Previous: commit options, Up: commit


A.8.2 commit の使用例

A.8.2.1 枝に対して格納する

オプション ‘-r’ を用いて、枝リビジョン (リビジョン番号が 偶数個のドットを含むもの) に格納することができます。 枝リビジョンは rtagtag コマンドに オプション ‘-b’ を指定して作成します (see Branching and merging)。 そして checkoutupdate で、 新しく作成した枝からソースを取り出します。 その結果、この作業ソースに対する変更を commit すると、 全て自動的に枝リビジョンの方に追加され、 幹の開発系統は全く影響を受けません。 例えば、バージョン 1.2 の製品に対するパッチを作成する必要があるけれど、 既にバージョン 2.0 の開発が始まっているような場合、 以下のようにします:

     $ cvs rtag -b -r FCS1_2 FCS1_2_Patch product_module
     $ cvs checkout -r FCS1_2_Patch product_module
     $ cd product_module
     [[ hack away ]]
     $ cvs commit

オプション ‘-r’ は作業ディレクトリに貼り付けられるため、 これを指定する必要はありません。

A.8.2.2 編集後に枝を作成する

例えば、先週取り出したリビジョンを元にして、 極めて実験的な変更をソフトウェアに加えてきたとします。 ここで実験に他の開発者を加えたいけれど、 幹の開発系統を妨げたくない場合は、 その変更点を新しい枝に格納すれば良いでしょう。 すると他の開発者も実験中のコードを取り出して、 cvs の衝突解決の恩恵を全て受けることができます。 このシナリオは次のようになるでしょう:

     [[ hacked sources are present ]]
     $ cvs tag -b EXPR1
     $ cvs update -r EXPR1
     $ cvs commit

update コマンドで、全てのファイルに オプション ‘-r EXPR1’ が貼り付けられます。 このとき、update コマンドでは ファイルに対する変更が削除されないことに注意して下さい。 ‘-r’ が貼り付けられているため、 commit すれば自動的に正しい枝に変更が格納されます。 これは次の手順もあります:

     [[ hacked sources are present ]]
     $ cvs tag -b EXPR1
     $ cvs commit -r EXPR1

しかしこの場合、 変更されていたファイルだけに ‘-r EXPR1’ が貼り付けられます。 従って別のファイルを変更して、フラグ ‘-r EXPR1’ を付けずに 格納した場合、誤って幹に格納されてしまいます。

他の開発者が実験に参加する際には、 単純に以下のようにして下さい:

     $ cvs checkout -r EXPR1 whatever_module