Sun WorkShop TeamWare ユーザーズガイド

ファイルの名前変更

名前を変更したファイルに対してプットバックあるいはブリングオーバートランザクションを実行する場合、ワークスペース管理ツールはファイルが新たに作成されたものなのか、以前から存在していたファイルの名前が変更されたものなのかを判断しなければなりません。ファイルの名前を変更する場合は、g-ファイルおよび SCCS 履歴ファイルの名前も変更する必要があります。名前の変更は、ファイルの内容の更新や衝突に関する処理と同じ規則に従って、ワークスペース階層全体に伝達されます。

トランザクションの実行中、ファイルは個別に処理されます。ディレクトリの名前を変更すると、そのディレクトリ内のすべてのファイルが個別に名前を変更されたかのように、それぞれのファイルについて評価が行われます。

名前の変更例

図 7-2 では、親ワークスペース内のファイル "C" の名前が "D" に変更されています。この場合、ワークスペース管理ツールはファイルを子ワークスペースにコピーする際に、次のいずれが正しいのかを判断しなければなりません。

図 7-2 ファイルの名前を "C" から "D" に変更

Graphic

プットバック操作の場合も同様の判断が必要です。つまり、子ワークスペース内の "C" は新しいファイルなのか、それとも別のファイルの名前が変更されたものなのか、という判断です。

対象となるファイルが新規ファイルである場合と既存ファイルである場合とでは、処理の内容がかなり異なります。親ワークスペースの新規ファイルである場合、ワークスペース管理ツールは子ワークスペースにも新しいファイルを作成します。一方、親ワークスペース内で既存のファイルの名前を変更したものであれば、子ワークスペース内でファイルの名前を "C" から "D" に変更します。

ワークスペース管理ツールは、名前が変更された場合でもファイルを特定できるように、SCCS 履歴ファイルに情報を記憶します。ブリングオーバーおよびプットバックのトランザクションの出力を表示させると、次のようなメッセージが含まれています。


検査したファイル数:

ワークスペース管理ツールは、更新ブリングオーバーまたはプットバックトランザクションに関連するすべてのファイルをチェックし、名前の変更が行われていないことを確認した上でファイルの転送を開始します。

名前が変更されたファイルを検出すると、名前の変更を子 (ブリングオーバーの場合) または親 (プットバックの場合) に通知します。「トランザクション出力」ウィンドウに次のようなメッセージが表示されます。


名前変更 旧: old_filename
     新: new_filename

名前履歴

ワークスペース管理ツールは、ファイルの名前に関する履歴情報を SCCS 履歴ファイルに格納します。名前履歴は、ファイルの作成以降、変更が加えられてきたワークスペース相対名をリストしたものです。この情報は、ワークスペース管理ツールが名前の変更されたファイルと新規ファイルとを識別するために使用します。ファイルの名前を変更すると、ワークスペース管理ツールはそのファイルを処理対象とする次のブリングオーバーまたはプットバックのトランザクションの実行時に、そのファイルの名前履歴を更新します。名前履歴が更新されると、「トランザクション出力」ウィンドウに次のようなメッセージが表示されます。


名前に関する詳細:
			1	親の名前履歴を更新
			1 	子の名前履歴を更新

名前変更の衝突

ごくまれではありますが、親ワークスペースと子ワークスペースで同時に同じファイルの名前が変更されることがあります。これを、名前変更の衝突と呼びます。たとえば、親ワークスペースでファイル "C" が "D" という名前に変更され、同時に子ワークスペースでは "E" に変更された場合です。

図 7-3 親子で同時にファイルの名前 ("C") が変更された場合

Graphic

名前変更の衝突が発生した場合、ワークスペース管理ツールは親の "D" と子の "E" が実際には同じであることを判別します。このような場合、ワークスペース管理ツールは次のような処置を行います。

ワークスペース管理ツールが名前変更の衝突を検出すると、「トランザクション出力」ウィンドウに次のようなメッセージが表示されます。


名前の衝突です: name_in_child
名前変更 旧: name_in_child
     新: name_in_parent