[目次へ][3章へ][4章へ][4.2へ] 最終更新:$Date: 2002/09/12 01:25:31 $

リンク付け中…項番号ずれてました。がふ。ブランチは7.1節ということで。


■■ [4.1] タグをつけてみよう (tag, rtag)
■■■ [4.1.1] タグって何?
■■■ [4.1,2] ある時点のモジュールにタグをつけるには
■■■ [4.1.3] タグをつけてみよう
■■■ [4.1,4] タグを消してみよう
■■■ [4.1.5] タグを移動してみる ←ここからずれてた
■■■ [4.1.6] つけられないタグ名があるの?
■■■ [4.1.7] Stickyタグって何?
■■■ [4.1.8] Stickyタグを解除するには
■■■ [4.1.9] Stickyタグについてちょっとだけ
■■■ [4.1.10] WinCvsでのタグの操作
■■■ [4.1.11] まとめ


■■4.1 タグをつけてみよう (tag, rtag)

CVSのりビジョン番号はファイルごとにばらばらです。これは、元がファイル単位での管理をしていたRCSの名残ですが、「ある時点の」モジュールを指定するにはちょっと不便です。例えば、「あるバグが取れた時点のモジュール」といった指定をしたいことがあります。日時指定もできますが、後から「バグが取れた」のはいつだったか思い出すのは大変です。このように、特定の時点のモジュールを取り出したいときには、その時点でモジュールにタグという名札のようなものをつけて取り出しやすくすると便利です。

■■■4.1.1 タグって何?

タグ(tag)と聞くと、映画「プライベート ライアン」に出て来た「dog tag」という単語を思い出します。日本語訳は認識票ということです。値札もtagですね。CVSでタグをつけるというのは、ある時点のモジュールに含まれるファイル群に識別札としてのマークをつけるということです。一旦このようなタグをつけておけば、checkoutやupdateの-rオプションにそのタグを指定することでタグのつけられた時点の作業コピーを取り出すことできます。

イメージ図を【図4.1.1】に示します。【図4.1.1】で中央に3本走っている矢印つきの線がa.txt、b.txt、c.txtという3つのファイルの過ごしてきた時間だと考えてください。途中にある四角がコミットされた時点で、中の番号がそのとき割り当てられたリビジョンだとします。ある時点でTAG1とつけたとし、そのあとTAG2とつけたとします。

この状態で、checkoutやupdateでTAG1を指定すると、それぞれ1.2、1.10、1.6というリビジョンのファイルを取り出すことができます。同様に、TAG2というタグを指定すると、それぞれ1.3、1.12、1.6というリビジョンのファイルが取り出せるわけです。c.txtの1.6のリビジョンのように、ひとつのリビジョンに複数のタグがついても構いません。

【図4.1.1】タグづけのイメージ図
f

■■■4.1,2 ある時点のモジュールにタグをつけるには

tagコマンドもしくはrtagコマンドを使用します。tagコマンドおよびrtagコマンドの書式は、それぞれ【図4.1.2】、【図4.1.3】のようになります。

【図4.1.2】tagコマンドの書式
▼
cvs tag [-bcdFflR] [-r リビジョン|-D 日付] タグ [ファイル群...]
▲


【図4.1.3】rtagコマンドの書式
▼
cvs rtag [-abdFflnR] [-r リビジョン|-D 日付] タグ モジュール群...
▲

tagには作業コピーが必要なのに対して、rtagには作業コピーが必要ありません。加えて、rtagにはある、-aオプション(削除されたファイルからタグを除去する)と-nオプション(管理ファイルmodulesで指定されたプログラムを実行しない:x.x.x項を参照)がtagコマンドにはありません。

作業ディレクトリがない場合や、rtagコマンド固有のオプションを使用したい場合にrtagを使うのがよいでしょう。rtagを使用する場合には、CVSROOTか-dオプションでリポジトリを指定します。作業コピー内では指定しなければ、CVS/Rootのリポジトリを見にいきますが、相対パスは使えません。

さて、ではタグの基本的な使い方(つける。外す、移動する)を見てみましょう。なお、タグのもう少し高度な高い方であるブランチについては、[7.2節]で説明します。

■■■4.1.3 タグをつけてみよう

第3章で活躍してもらったcvstestというモジュールに、もう少し頑張ってもらいましょう。この中にtagtest.txtというファイルを作成登録し、タグをつけてみます。【図4.1.4】がtagコマンドを使った場合で、【図4.1.5】がrtagコマンドを使った場合です。【図4.1.4】では、tagtest.txtが置いてある作業コピー内ディレクトリにいるとします。

【図4.1.4】tagコマンドでタグをつけてみる
▼
% cvs tag "TAGTEST1" tagtest.txt
T tagtest.txt
▲

途中ちょっと編集してバージョンを1.1から1.2に進めたとします。

【図4.1.5】rtagコマンドでタグをつけてみる
▼
% cvs -d /home/cvsroot rtag "TAGTEST2" cvstest/tagtest.txt
▲

tagコマンドでは、ファイル名にTというマークが先頭についたメッセージが返ってきましたが、rtagでは何のメッセージも返ってきませんでした。ちょっと不安になりますね。ファイルにタグがついているかどうかは、statusコマンドをオプション-vをつけて実行することで見ることができます。見てみましょう【図4.1.6】。

【図4.1.6】ファイルにタグがついてるかどうか見てみる
▼
% cvs status -v tagtest.txt
===================================================================
File: tagtest.txt       Status: Up-to-date


   Working revision:    1.2     Fri Aug 16 03:24:47 2002
   Repository revision: 1.2     /home/cvsroot/cvstest/tagtest.txt,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)


   Existing Tags:
        TAGTEST2                        (revision: 1.2)
        TAGTEST1                        (revision: 1.1)
▲

Existing Tagsの下に並んでいるのが、タグとその対応するリビジョンです。つまり、この例では、リビジョン1.1にTAGTEST1がリビジョン1.2にTAGTEST2というタグがついていると表示されています。これは、tag, rtagコマンドで指定したものと同じですね。タグはつけられました。

■■■4.1.4 タグを消してみよう

タグをつけ間違えることもありますし、あるタグを使わなくなって邪魔になることもあります。そういうときはタグを消したくなるでしょう。タグを消すときには、tagまたはrtagコマンドの-dオプションを使います。つまり、【図4.1.7】のように、tagコマンドに-dオプションと消したいタグを指定して実行します。

【図4.1.7】tagコマンドでタグを消してみる
▼
% cvs tag -d "TAGTEST2" tagtest.txt
D tagtest.txt
▲

と、先頭にDのついた出力がありました。statusコマンドを使えば、タグが消えていることが確認できます【図4.1.8】。確かにExisting Tagsの中からTAGTEST2は消えていますね。

【図4.1.8】消えたかな?
▼% cvs status -v tagtest.txt
===================================================================
File: tagtest.txt       Status: Up-to-date


   Working revision:    1.2     Fri Aug 16 03:24:47 2002
   Repository revision: 1.2     /home/cvsroot/cvstest/tagtest.txt,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)


   Existing Tags:
        TAGTEST1                        (revision: 1.1)
▲

もちろん、rtagコマンドでも消すことができます。作業コピー内だと、リポジトリを指定する必要はなかったりしますが、モジュールの先頭ディレクトリからファイルを指定する必要があります。つまり、tagtest.txtとだけ指定することはできなくて、cvstest/tagtest.txtと指定しなくてはいけません【図4.1.9】。

【図4.1.9】rtagコマンドでタグを消してみる
▼
% cvs rtag -d "TAGTEST1" cvstest/tagtest.txt
D tagtest.txt
▲

status -vで確認してみます【図4.1.10】。

【図4.1.10】消えたかな?
▼
% cvs status -v tagtest.txt
===================================================================
File: tagtest.txt       Status: Up-to-date


   Working revision:    1.2     Fri Aug 16 03:24:47 2002
   Repository revision: 1.2     /home/cvsroot/cvstest/tagtest.txt,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)


   Existing Tags:
        No Tags Exist
▲

ということで、Existing Tags:領域からタグ名がなくなり、「タグはないよ(No Tags Exist)」というメッセージになりました。

■■■4.1.5 タグを移動してみる

消してつけなおしてもいいのですが、移動したいタグがどのリビジョンについているのか調べたりするのは面倒だったりします。特にファイルが多くなると、煩雑さが爆発します。このため、タグを移動するためのオプション-Fが存在します。例えば、先ほどのファイル(tagtest.txt)に再度タグをつけなおし、その後編集・コミットした状態を考えてみましょう【図4.1.11】。

【図4.1.11】もう一度タグをつけて編集コミットした状態
▼
% cvs status -v tagtest.txt
===================================================================
File: tagtest.txt       Status: Up-to-date


   Working revision:    1.3     Fri Aug 16 03:28:04 2002
   Repository revision: 1.3     /home/cvsroot/cvstest/tagtest.txt,v

   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)

   Existing Tags:
        TAGTEST2                        (revision: 1.2)
        TAGTEST1                        (revision: 1.1)
▲

この新しいリビジョンの方に以前のリビジョンについているタグを設定したいとします。tag, rtagどちらでも-Fオプションをつけて移動することができますが、まずtagコマンドでTAGTEST1というタグを移動してみましょう【図4.1.12】。

【図4.1.12】tagコマンドで移動してみる
▼
% cvs tag -F "TAGTEST1"
cvs tag: Tagging .
T tagtest.txt
▲

Tマークがついた出力がありました。-Fは「移動」というより「強制(Force)」の意味なんでしょうね。ただ、後で6.4.x項で見ますが、CVSは「移動」と認知しているようです。なんだかややこしいですね。それはともかく、本当に移動しているか見てみましょう【図4.1.13】。

【図4.1.13】状態をまた確認
▼
$ cvs status -v tagtest.txt
===================================================================
File: tagtest.txt       Status: Up-to-date


   Working revision:    1.3     Fri Aug 16 03:28:04 2002
   Repository revision: 1.3     /home/cvsroot/cvstest/tagtest.txt,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)


   Existing Tags:
        TAGTEST2                        (revision: 1.2)
        TAGTEST1                        (revision: 1.3)
▲

無事1.1から1.3にTAGTEST1が移動していますね。次にTAGTEST2のタグをrtagで移動してみましょう。移動の前に編集してコミットしておきます(まぁ、別にリビジョン1.3に多重にタグがついてもいいのですが)【図4.1.14】。

【図4.1.14】編集してさらにrtagで移動
▼
% cvs -d /home/cvsroot rtag -F "TAGTEST2" cvstest/tagtest.txt
▲

rtagでタグをつけるときには相変わらずメッセージがないですね。不安なので、最後の状態チェックをしてみましょう【図4.1.15】。

【図4.1.15】最後はどうなった?
▼
% cvs status -v tagtest.txt
===================================================================
File: tagtest.txt       Status: Up-to-date


   Working revision:    1.4     Fri Aug 16 03:29:58 2002
   Repository revision: 1.4     /home/cvsroot/cvstest/tagtest.txt,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)


   Existing Tags:
        TAGTEST2                        (revision: 1.4)
        TAGTEST1                        (revision: 1.3)
▲

無事移動したみたいですね。こうした、タグ移動のイメージ図を【図4.1.16】に示しておきます。

【図4.1.16】タグの移動のイメージ図

タグを活用してみてください。

■■■4.1.6 つけられないタグ名があるの?

あります。non-visible characterつまり空白やタブなどの見えない文字をつけることはできませんし、エスケープ・シークエンスが入っている日本語などは使えません。?や\などは使えますが、「$,.:;@」の5文字は使えません。

試しに「abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\!#%^&*()-=\`_+|~[]{}'/<>?"」というタグをつけてみましたが通りました。rcs.cをざっと見た感じでは、文字数制限は特にないようです。そんなに長いタグをつけるのも大変だと思いますが、分岐(ブランチ)を使う場合には結構長いタグをつけることもあるようです。

■■■4.1.7 Stickyタグって何?

著者ははじめて-rオプション(-Dもなんですが)を指定してファイルをアップデートしたとき、困ったことに遭遇しました。そのファイルを編集して、いざコミットするという段になってコミットできなかったのです。ちょっと、やってみましょう【図4.1.17】。

【図4.1.17】タグを指定してファイルをアップデートしてみる
▼
% cvs update -r TAGTEST1 tagtest.txt
U tagtest.txt
% cvs status tagtest.txt
===================================================================
File: tagtest.txt       Status: Up-to-date


   Working revision:    1.3     Fri Aug 16 03:31:08 2002
   Repository revision: 1.3     /home/cvsroot/cvstest/tagtest.txt,v
   Sticky Tag:          TAGTEST1 (revision: 1.3)
   Sticky Date:         (none)
   Sticky Options:      (none)
(ファイル編集)
▲

まず、さっきつけたタグTAGTEST1を指定してupdateコマンドを実行してみます【図4.1.17 1行目】。このとき、ぱっと見てはわからないのですが、statusコマンドを実行すると、Sticky Tagというところに、TAGTEST1 (revision: 1.1)というのがでてくるようになります。ちなみに、リビジョンや日付を指定してもSticky Tagにその情報が設定されます。

次に、このSticky Tagが設定された状態で、編集しコミットしようとしてみます【図4.1.18】。

【図4.1.18】Sticky Tagのついた状態でコミット
▼
% cvs commit -m "Sticky Test" tagtest.txt
cvs commit: sticky tag `TAGTEST1' for file `tagtest.txt' is not a branch
cvs [commit aborted]: correct above errors first!
▲

「StickyタグTAGTEST1はブランチじゃないよ!」と怒られてコミットできません【図4.1.18 2-3行目】。 ちなみに、ブランチの場合はコミットできます。ブランチについては、x.x.x項で説明します。

■■■4.1.8 Stickyタグを解除するには

こんな状態に陥ったらどうしたらよいんでしょうか。この、Stickyタグはupdateコマンドを使って削除することができます。そのためには、【図4.1.19】のように、オプション-Aをつけてupdateコマンドを実行します。

【図4.1.19】Stickyタグの解除の仕方
▼
% cvs update -A tagtest.txt
RCS file: /home/cvsroot/cvstest/tagtest.txt,v
retrieving revision 1.3
retrieving revision 1.4
Merging differences between 1.3 and 1.4 into tagtest.txt
rcsmerge: warning: conflicts during merge
cvs update: conflicts found in tagtest.txt
C tagtest.txt
▲

ひとつ古いバージョンを編集したため、新しいバージョンと競合(コンフリクト)を起こしていたりしますが、とりあえずおいておきましょう。勝手にマージしてくれていますので、後で編集して改めてコミットします。ここで、statusコマンドを実行してみると、Stickyタグが外れていることがわかります【図4.1.20 7行目】。競合があるので、Status:の項がいつもとちょっと違いますが。

【図4.1.20】状態を見てみると…
▼
% vs status tagtest.txt
===================================================================
File: tagtest.txt       Status: File had conflicts on merge


   Working revision:    1.4     Result of merge
   Repository revision: 1.4     /home/cvsroot/cvstest/tagtest.txt,v
   Sticky Tag:          (none)
   Sticky Date:         (none)
   Sticky Options:      (none)
▲

これで無事に編集がコミットできるようになっているはずです…が競合があるのでそちらを解消しなければなりません【図4.1.21】。<<<<<<< とか =======、>>>>>>>がついてる部分を削除して、状態を整えてください。

【図4.1.21】競合ってこんな感じ
▼
<<<<<<< tagtest.txt
TAGTEST1's modification.
=======
Final commitment.
>>>>>>> 1.4
▲

ちょこちょこと編集して…競合を解消してからコミットしてみましょう【図4.1.22】。

【図4.1.22】今度はコミットできるかな?
▼
% cvs commit -m "Undef Sticky Test" tagtest.txt
Checking in tagtest.txt;
/home/cvsroot/cvstest/tagtest.txt,v  <--  tagtest.txt
new revision: 1.5; previous revision: 1.4
done
▲

無事できました。日付のStickyタグも同じように外れますので、タグ指定や日付指定を活用してください。

■■■4.1.9 Stickyタグについてちょっとだけ

ここで、ほんの少しだけ、StickyタグについてCVSが何をしているのか見てみましょう。updateコマンドで、タグや日付を指定したときに、何が起こっているのでしょうか。CVSディレクトリのファイルEntriesにその影響が出ています。ちょっと見てみましょう。【図4.1.23】は、タグを指定してアップデートしたときの例です。CVS/Entriesの中の当該ファイルの情報をファイル名でUNIXの一般的なコマンドであるgrepを使って抜き出してみましょう【図4.1.23 3行目】。この情報の最後にタグを意味するT一文字を頭にくっつけたタグの名前がついているのがわかると思います。

【図4.1.23】StickyタグとCVS/Entries
▼
% cvs update -r TAGTEST1 tagtest.txt
U tagtest.txt
% grep tagtest.txt CVS/Entries
/tagtest.txt/1.3/Fri Aug 16 03:51:14 2002//TTAGTEST1
▲

【図4.1.24】は日付を指定してアップデートしてみた例です。同様に、日付を意味するDを頭につけて日付の具体的な値が入っているのがわかると思います。リビジョン番号を指定すれば、リビジョン番号が入ります。ここがSticky TagとSticky Dateの場所なのですね。

【図4.1.24】Sticky DateとCVS/Entries
▼
% cvs update -D "Aug 15 2002" tagtest.txt
U tagtest.txt
% cvs status -v tagtest.txt
===================================================================
File: tagtest.txt       Status: Up-to-date

   Working revision:    1.4     Fri Aug 16 03:52:43 2002
   Repository revision: 1.4     /home/cvsroot/cvstest/tagtest.txt,v
   Sticky Tag:          (none)
   Sticky Date:         2002.08.15.11.02.00
   Sticky Options:      (none)

   Existing Tags:
        TAGTEST2                        (revision: 1.4)
        TAGTEST1                        (revision: 1.3)

% grep tagtest.txt CVS/Entries
/tagtest.txt/1.4/Fri Aug 16 03:52:43 2002//D2002.08.15.11.02.00
▲

■■■4.1.10 WinCvsでのタグの操作

WinCvsでのタグの操作を見てみましょう。タグをつけて、移動して、削除する、という流れでやってみす。が、まず対象となるものを用意しないといけません。3章で使用したwintestモジュールの中にtagtest.txtを用意します【図4.1.25】。まぁ、tmp1.txtとかでもいいのですけどね。

【図4.1.25】 tagtest.txtの用意

まぁ、とにかく用意できたら、がんがんやっていきましょう。

■■■■ タグをつけてみる

タグを普通につけるには、メニュー[修正]→[タグの作成(tag)(C)...]【図4.1.26】を選ぶか、タグバーのタグアイコンを選びます。

【図4.1.26】 [修正]→[タグの作成(tag)(C)...]メニュー

すると、【図4.1.27】のようなダイアログが現われ、タグの名前を書け、と言われている雰囲気になるので、書きます。相変わらずTAGTEST1とかいう味もそっけもないタグをつけてみます。

【図4.1.27】 どうもタグの名前を書かないといけないらしい

すると、【図4.1.28】のようなメッセージがアウトプット領域に表示され、無事ついたような感じがします。

【図4.1.28】普通に終わった模様
▼
cvs tag TAGTEST1 tagtest.txt (ディレクトリ C:\home\mika\workcopy\wintest\ 内)
T tagtest.txt


*****CVS はコード 0 で終了しました*****
▲

ここで、確認してもいいのですが、その前にrtagを使ってタグをつける方法も紹介しておきましょう。その前にちょっと編集してリビジョンを1.2にしておきます【図4.1.29】。

【図4.1.29】

rtagに対応するアイコンは用意されていません。メニューだけがあります。メニューは[作成]→[モジュールにタグを作成(rTag)...]【図4.1.30】です。選んでみましょう。

【図4.1.30】 rtagのメニュー[作成]→[モジュールにタグを作成(rTag)...]

こちらのダイアログ【図4.1.31】はタグの名前だけでなく、モジュール名も埋めなくてはいけません。モジュールじゃなくてファイルが対象としているので、「wintest/tagtest.txt」と書きます。タグ名はやっぱりTAGTEST2とします。

【図4.1.31】 ファイル名を書くのがたるい

とりあえず、それだけで「OK」ボタンを押すと【図4.1.32】のようなメッセージがアウトプット領域に出力されて、なんか終わったような気がします。

【図4.1.32】なんか終わった…のかなぁ…
▼
cvs rtag TAGTEST2 wintest/tagtest.txt 


*****CVS はコード 0 で終了しました*****
▲

無茶苦茶不安なので確認してみたいと思います。statusコマンドで確認してもいいのですが、せっかくGUIなので、グラフ表示を利用してみましょう。メニュー[問合せ]→[更新履歴をグラフで表示]【図4.1.33】またはファイルバーのグラフ表示アイコンを選んでください。

【図4.1.33】 [問合せ]→[更新履歴をグラフで表示]メニュー

無事選ぶと、【図4.1.34】のようなダイアログが現われます。が、選択肢はややこしいので、気にせずそのまま「OK」ボタンを押して実行してください。

【図4.1.34】 ややこしげなオプションがたくさん…

すると、【図4.1.35】のように、ワークスペースがあった場所にグラフが表示されます。左端にファイル名があり、右にそのファイルのリビジョンが並び、各リビジョンにタグがくっついているのが分かります。1.1にTAGTEST1が、1.2にTAGTEST2がついていて、間違いないですね。

【図4.1.35】 おお、グラフだ

ところで、この状態からワークスペースに復帰するのにどうしたらいいでしょう。うっかりグラフを出してしまってびびることもありますが、ウインドウ自体が新しく作られているので、なんとかして閉じると、ワークスペースが出てきます。ばってんで閉じてもいいですが、新たに現われた[グラフ]メニューから[閉じる(C)]【図4.1.36】を選んでもらってもいいと思います。ばってんだと、うっかりWinCvs本体を閉じてしまうこともあるので(誰とは言いませんが…げふんげふん)。

【図4.1.36】 [グラフ]→[閉じる(C)]メニュー

なお、[ウィンドウ]メニューからワークスペースとグラフ表示画面を切り替えることもできます【図4.1.37】。この場合グラフ表示画面は消えません。で、新しく作るとどんどん増えていったりします。適当に消すようにしてください。

【図4.1.37】 切り替えてみる

■■■■ タグを移動してみる

次にタグを移動してみます。そのために、tagtest.txtのリビジョンをもうひとつ上げて1.3にしておきます【図4.1.38】。

【図4.1.38】 tagtest.txtのリビジョンを1.3にしておこう

移動するといっても、強制的につけなおすだけですので、途中まではタグの作成と手順は一緒です。【図4.1.39】のダイアログが出てきたところでとめておいてください。違うのは、[同じタグが存在したときは上書きする(E)]チェックボックスを選択しておくところだけです。

【図4.1.39】 チェックを忘れずに

これで実行すると【図4.1.40】のように、-Fオプションつきでtagコマンドが実行されている様子が、アウトプット領域に表示されます。

【図4.1.40】
▼
cvs tag -F TAGTEST1 tagtest.txt (ディレクトリ C:\home\mika\workcopy\wintest\ 内)
T tagtest.txt


*****CVS はコード 0 で終了しました*****
▲

ついでに、rtagの方でも移動してみましょう。つけなおす前に、編集してコミットして1.4に上げておきます【図4.1.41】。

【図4.1.41】 もういっちょ上げて1.4にしておこう

それから、タグをつけはじめます。途中のダイアログに、[同じタグが存在したときは上書きする(O)]チェックボックスが存在するので、これを選択して実行します【図4.1.42】。

【図4.1.42】 rtagの方も

すると、-Fオプションつきでrtagコマンドが実行されている様子が、アウトプット領域に表示されます【図4.1.43】。

【図4.1.43】
▼
cvs rtag -F TAGTEST2 wintest/tagtest.txt


*****CVS はコード 0 で終了しました*****
▲

ということで、どんな状態になっているか、グラフ表示してみましょう【図4.1.44】。1.4までリビジョンがあがって、1.3と1.4にそれぞれTAGtEST1とTAGTEST2が移動していることがわかります。

【図4.1.44】 なんかグラフが伸びてる

■■■■ タグを削除する

最後にタグを削除して終わりましょう。タグを削除するには、対象ファイルやフォルダを選んだ状態で、メニュー[修正]→[タグの削除(D)...]【図4.1.45】を選ぶか、タグバーからタグ削除アイコンを選択します。

【図4.1.45】 [修正]→[タグの削除(D)...]メニュー

すると、タグの削除ダイアログが現われ、タグの名前を入力、もしくは選択することができます。tagコマンドでつけた場合には一覧に現われるのでそこから選択するのがらくちんです【図4.1.46】。

【図4.1.46】 タグの一覧でらくちん

ここで、TAGTEST1を選択して、「OK」ボタンを押すと、【図4.1.47】のように-dオプションでtagコマンドが実行された様子が、アウトプット領域に表示されます。

【図4.1.47】
▼
cvs tag -d TAGTEST1 tagtest.txt (ディレクトリ C:\home\mika\workcopy\wintest\ 内)
D tagtest.txt


*****CVS はコード 0 で終了しました*****

▲

続いてrtagで削除してみましょう。同様に対象を選んだ状態で、メニュー[作成]→[モジュールからタグを削除(D)...]【図4.1.48】を選んでください。

【図4.1.48】 [作成]→[モジュールからタグを削除(D)...]メニュー

と、【図4.1.49】のようなダイアログが現われます。タグをつけるときと同じように、タグの名前とモジュール名を自力で埋める必要があります。tagのダイアログと違ってタグの名前を選ぶこともできませんので、頑張りましょう。よいしょ。

【図4.1.49】 モジュール名を埋めるのがやっぱり面倒くさい

とアウトプット領域にrtagコマンドの実行が表示され、なんか終わったように見えます【図4.1.50】。

【図4.1.50】 rtagコマンドが実行されてる模様
▼
cvs rtag -d TAGTEST2 wintest/tagtest.txt 


*****CVS はコード 0 で終了しました*****

▲

ここで、グラフ表示してみる【図4.1.51】と、タグが無くなっているのが確認できると思います。

【図4.1.51】 きれいさっぱりタグが無い

■■■4.1.11 まとめ

●タグをつけるには(作業コピーを使う場合)

	作業コピー内に入る
	↓
	cvs tag TAGNAME


●タグをつけるには(リポジトリを指定する場合)

	cvs -d /home/cvsroot rtag TAGNAME module


●タグがついているか確認するには

	作業コピー内に入る
	↓
	cvs status -v


●タグを利用してcheckoutするには(そして編集したい場合)

	cvs -d /home/cvsroot checkout -r TAGNAME module
	↓
	作業コピー内に入る(cd module)
	↓
	cvs update -A


●タグを利用してupdateするには(そして編集したい場合)

	作業コピー内に入る
	↓
	cvs update -r TAGNAME
	↓
	cvs update -A