Sun WorkShop TeamWare ユーザーズガイド

親から子へのファイルのコピー (ブリングオーバー)

ワークスペース管理ツールのトランザクションは、すべて子ワークスペースの側からの視点で実行されます。ブリングオーバートランザクションは、親から子にファイルの「引き渡し」を行います。ブリングオーバートランザクションには次の 2 種類があります。

作成ブリングオーバー 

親ワークスペースからまだ存在しない子ワークスペースにファイルをコピーします。子はこのトランザクションの一環として作成されます。  

更新ブリングオーバー 

既存のワークスペースにファイルをコピーします。子ワークスペースの内容は、このトランザクションの一環として更新されます。 


注 -

作成および更新ブリングオーバートランザクションでは、ワークスペース管理ツールのワークスペース以外のディレクトリから、ファイルやディレクトリを取り込むことができます。ただし、ワークスペースではないディレクトリにファイルをプットバックすることはできません。


新しい子ワークスペースの作成 (作成ブリングオーバー)

作成ブリングオーバートランザクションは、親ワークスペースからまだ存在していない子ワークスペースにファイルをコピーするときに使用します。作成ブリングオーバートランザクションの一環として、新しい子ワークスペースが作成されます。作成ブリングオーバーのトランザクションウィンドウを表示するには、次のいずれかの方法を使用します。

作成ブリングオーバートランザクションは、SCCS で管理されているファイルに対して動作します。子ワークスペースにファイルがコピーされるということは、実際には、SCCS 履歴ファイルがコピーされ、対応する g-ファイル (最新のデルタ) が SCCS get コマンドによって作成されるということを意味します。

作成ブリングオーバートランザクションを実行するには:

  1. 親ワークスペースを指定する。

    ワークスペース表示区画でワークスペースアイコンを選択してから、作成ブリングオーバーのトランザクションダイアログを表示すると、「親ワークスペースディレクトリ」フィールドにそのパス名が自動的に挿入されます。このフィールドの内容はユーザーが変更できます。また、アクセス可能であれば任意のワークスペースの絶対パス名を指定できます。指定するワークスペース名は、ワークスペース表示区画に表示されている必要はありません。


    注 -

    ワークスペース以外のディレクトリのパス名を指定して、ディレクトリやファイルを新しいワークスペースに取り込むこともできます。


  2. 子ワークスペースを指定する。

    手順 1 で指定した親ワークスペースからファイルをコピーする先の子ワークスペースの絶対パス名を「子ワークスペースディレクトリ」フィールドに入力します。


    注 -

    親ワークスペースおよび子ワークスペースはファイルシステムを使用してアクセスできる必要があります。これらのアクセスには、オートマウンタまたは NFS マウントのいずれかを使用します。 ワークスペースへの (ユーザーの) アクセス可能性は、各ワークスペースの Codemgr_wsdata/access_control ファイルによって制御されます。“ワークスペースへのブリングオーバー”および“ワークスペースからのブリングオーバー”のアクセス設定が適切であることを確認してください。詳細は、「ワークスペースへのアクセス制御」を参照してください。


  3. ファイルリスト区画でディレクトリとファイル名のリストを作成する。

    親ワークスペースの内容は、すべてを子にコピーすることも、その一部のみをコピーすることもできます。ファイルリスト区画でコピーしたいディレクトリとファイルを指定してください。ディレクトリとファイルを指定する方法については、「トランザクションの対象となるディレクトリとファイルの指定」を参照してください。


    注 -

    独自の FLP を使用してファイルリストを作成する場合は、FLP もファイルリスト区画で指定してください。



    注 -

    ディレクトリ名およびファイル名として指定した相対パス名は、ワークスペース階層の最上位 (ルート) ディレクトリ (親ワークスペースと子ワークスペースで同じと仮定) に対する相対パスとして解釈されることに注意してください。絶対パス名で指定したファイル名は、親ワークスペースと子ワークスペースのいずれかにあるファイルを指し、該当するファイルが存在しない場合、そのファイル名は無視されます。


  4. オプションチェックボックスを選択する。

    • 「プレビュー」チェックボックスを選択すると、トランザクションの実行結果のプレビューを表示できます。このオプションを選択した状態で作成ブリングオーバートランザクションを実行すると、ファイルのコピーは行われませんが、「トランザクション出力」ウィンドウに出力メッセージが表示され、実際にコピーが行われた場合の結果を確認できます。

    • 「詳細メッセージ」チェックボックスを選択すると、「トランザクション出力」ウィンドウに、より詳細なメッセージを表示させることができます。デフォルトの設定では、作成および更新されたファイル、および衝突の存在するファイルそれぞれについてメッセージが表示されます。このオプションを選択した状態で作成ブリングオーバートランザクションを実行すると、コピーされなかったファイルを含め、すべてのファイルに関するメッセージが表示されます。なお、このオプションと「メッセージ抑制」オプションを同時に指定した場合には、「メッセージ抑制」オプションが使用されます。

    • 「メッセージ抑制」チェックボックスを選択すると、「トランザクション出力」ウィンドウにステータスメッセージを出力しないようにすることができます。

    • 「SCCS get 抑制」チェックボックスを選択すると、ブリングオーバートランザクションの実行時に SCCS get コマンドが自動的に実行されないようにすることができます。通常は、ブリングオーバーの後にSCCS 履歴から g-ファイルが抽出されます。このオプションを指定するとファイルの転送速度が向上しますが、後でユーザー自身で get を実行しなければなりません。

    • 「バックアップしない」チェックボックスを選択すると、既存のファイルをブリングオーバー先ワークスペースの Codemgr_wsdata/backup/files ディレクトリにコピーする処理を省略できます。このオプションを使用すると、子ワークスペースが使用するディスク領域が減りパフォーマンスが速くなりますが、処理を取り消して元に戻すことはできなくなります。


      注 -

      「強制衝突」オプションは、作成ブリングオーバートランザクションには適用されません。


  5. 「ブリングオーバー」ボタンをクリックして、トランザクションを実行する。

    取り消しトランザクションを使用すると、作成ブリングオーバートランザクション中に実行された処理を元に戻すことができます。詳細は、「ブリングオーバーまたはプットバックの取り消し」を参照してください。

ファイルのチェックアウト

ワークスペース管理ツールは、作成ブリングオーバートランザクションの実行時に親ワークスペースで SCCS からチェックアウトされたファイルを検出すると、それらのファイルの整合性や変更内容を維持するために、表 7-1 のような処置を行います。

表 7-1 作成ブリングオーバーにおけるチェックアウトファイルの状態と処置

親ワークスペース内のチェックアウトファイル 

ワークスペース管理ツールの処置 

g-ファイルと最新デルタが異なる

警告を出す 

ファイルを処理 

g-ファイルと最新デルタが同じ

ファイルを処理 

「トランザクション出力」ウィンドウ

トランザクションの実行が進むにつれて、「トランザクション出力」ウィンドウにステータス情報が表示されます。ファイルの処理に合わせてメッセージが表示され、実行が完了すると、トランザクション全体の要約情報が表示されます。

ワークスペースのロック

ワークスペース管理ツールが親ワークスペースのファイルの読み取りおよび検査を行なっているときには、そのワークスペースに対して読み取りロックがかかります。一方、子ワークスペース内のファイルを操作している場合には、書き込みロックがかかります。

複数のワークスペース管理コマンドが同時にワークスペース内のファイルの読み取りを行うと、複数の読み取りロックが発生します。読み取りロックが 1 つでも存在すると、そのワークスペースに対してほかのコマンドを実行して書き込みを行うことはできません。書き込みロックは一度に 1 つしか存在できず、書き込みロックが存在する間、ほかのワークスペース管理コマンドでそのワークスペースに書き込みを行うことはできません。ロックの状態は、各ワークスペース内の Codemgr_wsdata/locks ファイルで管理されています。

ロックされているワークスペースに対してファイルをブリングオーバーしようとすると、そのロックを所有しているユーザーの名前、ユーザーが実行しているコマンド、およびロックが発生した時刻を示すメッセージが表示されます。


親ワークスペース: /user/demohost/ws/man_pages
子ワークスペース:  /home/demohost/ws/man_pages_yasue
bringover: 書き込みロックが取得できません。ワークスペース
"/home/demohost/ws/man_pages_yasue" に以下のロックが存在しています:
    ユーザ jack は bringover コマンドを実行中です (pid 20291)
マシン holiday で 9 分
    (エラー 2021)

履歴ファイル

ブリングオーバートランザクションに関する情報は、Codemgr_wsdata/history ファイルに記録されます。この情報は、ワークスペースにおいてファイルがどのように変更されてきたかを知る上で重要です。このファイルに関する詳細は、「ワークスペースに関するコマンド履歴の表示」を参照してください。

既存の子ワークスペースの更新 (更新ブリングオーバー)

更新ブリングオーバートランザクションは、既存の子ワークスペースの内容を更新するときに使用します。更新ブリングオーバーのトランザクションウィンドウを開くには、次のいずれかの方法を使用します。

更新ブリングオーバートランザクションでは、SCCS の制御下にあるファイルが転送されます。あるファイルが親ワークスペースには存在するが、子ワークスペースには存在しない場合、その SCCS 履歴ファイルが子にコピーされ、g-ファイル (最新のデルタ) が SCCS get コマンドによって作成されます。また、あるファイルが親と子の両方に存在し、親の側にのみ変更が加えられている場合は、親から子に新しいデルタがコピーされます。親と子でそれぞれファイルに変更が加えられている場合は、子ワークスペース側の新しいデルタが SCCS ブランチに移動されます。

更新ブリングオーバートランザクションを実行するには:

  1. 子ワークスペースを指定する。

    ワークスペース表示区画でワークスペースアイコンを選択してから更新ブリングオーバーのトランザクションウィンドウを開くと、その名前が「子ワークスペースディレクトリ」フィールドに自動的に挿入されます。このフィールドは、新しいパス名を挿入したり、任意の時点でユーザーが変更したりすることができます。

  2. 親ワークスペースを指定する。

    手順 1 で指定された子の親ワークスペースの名前が「親ワークスペースディレクトリ」フィールドに自動的に挿入されます。親ワークスペース名は、ワークスペース管理ツールのメタデータファイル Codemgr_wsdata/parent を参照して挿入されます。


    注 -

    ワークスペースではないディレクトリのパス名を指定して、ファイルやディレクトリをワークスペースに取り込むこともできます


    「親ワークスペースディレクトリ」フィールドに新しい親のパス名を指定すると、1 回限りの更新ブリングオーバートランザクションで、子ワークスペースの親を変更できます。この場合、親の変更はそのトランザクションについてのみ有効になります。ワークスペースの親を完全に変更したい場合には、「ワークスペース管理」ウィンドウで「編集」⇒「親の変更」を選択するか、該当する子ワークスペースのアイコンを新しい親のアイコン上にドラッグします。ワークスペースの親の変更についての詳細は、「ワークスペースの親子関係の変更」を参照してください。


    注 -

    ワークスペース表示区画でアイコンが選択されていない状態で「トランザクション」⇒「ブリングオーバー」⇒「更新」を選択すると、フィールドに情報の入っていない「トランザクション」ウィンドウが開きます。「子ワークスペースディレクトリ」に子ワークスペースの名前をユーザーが直接入力し、Return キーを押すと、自動的に「親ワークスペースディレクトリ」フィールドが更新されます。



    注 -

    親ワークスペースおよび子ワークスペースはファイルシステムを使用してアクセスできる必要があります。これらのアクセスには、オートマウンタまたは NFS マウントのいずれかを使用します。 ワークスペースへの (ユーザーの) アクセス可能性は、各ワークスペースの Codemgr_wsdata/access_control ファイルによって制御されます。“ワークスペースへのブリングオーバー”および“ワークスペースからのブリングオーバー”のアクセス設定が適切であることを確認してください。詳細は、「ワークスペースへのアクセス制御」を参照してください。


  3. ファイルリスト区画でディレクトリとファイルのリストを作成する。

    親ワークスペースの内容は、すべてを子にコピーすることも、その一部のみをコピーすることもできます。ファイルリスト区画に、コピーするディレクトリとファイルを指定します。ディレクトリおよびファイルの指定方法については、「トランザクションの対象となるディレクトリとファイルの指定」を参照してください。


    注 -

    独自の FLP を使用してファイルリストを作成する場合は、FLP もファイルリスト区画で指定してください。



    注 -

    ディレクトリ名およびファイル名として指定した相対パス名は、ワークスペース階層の最上位 (ルート) ディレクトリ (親ワークスペースと子ワークスペースで同じと仮定) に対する相対パスとして解釈されることに注意してください。絶対パス名で指定したファイル名は、親ワークスペースと子ワークスペースのいずれかにあるファイルを指し、該当するファイルが存在しない場合、そのファイル名は無視されます。


  4. オプションを選択する。

    • 「プレビュー」チェックボックスを選択すると、トランザクションの実行結果のプレビューを表示できます。このオプションを選択した状態で更新ブリングオーバートランザクションを実行すると、ファイルのコピーは行われませんが、「トランザクション出力」ウィンドウに出力メッセージが表示され、実際にコピーが行われた場合の結果を確認できます。

    • 「詳細メッセージ」チェックボックスを選択すると、「トランザクション出力」ウィンドウに、より詳細なメッセージを表示させることができます。デフォルトの設定では、作成および更新されたファイル、および衝突の存在するファイルそれぞれについてメッセージが表示されます。このオプションを選択した状態でブリングオーバートランザクションを実行すると、コピーされなかったファイルを含め、すべてのファイルに関するメッセージが表示されます。なお、このオプションと「メッセージ抑制」オプションを同時に指定した場合には、「メッセージ抑制」オプションが使用されます。

    • 「メッセージ抑制」チェックボックスを選択すると、「トランザクション出力」ウィンドウにステータスメッセージを出力しないようにすることができます。

    • 「SCCS get 抑制」チェックボックスを選択すると、ブリングオーバートランザクションの実行時に SCCS get コマンドが自動的に実行されないようにすることができます。通常は、ブリングオーバーの後、SCCS 履歴から g-ファイルが抽出されます。このオプションを指定するとファイルの転送速度が向上しますが、後でユーザー自身で get を実行しなければなりません。

    • 「強制衝突」チェックボックスを選択すると、すべての更新を衝突として扱うことができます。

    • 「バックアップしない」チェックボックスを選択すると、既存のファイルをブリングオーバー先ワークスペースの Codemgr_wsdata/backup/files ディレクトリにコピーする処理を省略できます。このオプションを使用すると、子ワークスペースが使用するディスク領域が減りパフォーマンスが速くなりますが、処理を取り消して元に戻すことはできなくなります。

  5. 「ブリングオーバー」ボタンをクリックして、トランザクションを実行する。

    取り消しトランザクションを使用すると、更新ブリングオーバートランザクション中に実行された処理を元に戻すことができます。詳細は、「ブリングオーバーまたはプットバックの取り消し」を参照してください。

ファイルのチェックアウト

ワークスペース管理ツールは、更新ブリングオーバートランザクションの実行時に、親ワークスペースで SCCS からチェックアウトされたファイルを検出すると、それらのファイルの整合性や変更内容を維持するために、表 7-2 のような処置を行います。

表 7-2 更新ブリングオーバーにおけるチェックアウトファイルの状態と処置

親のチェックアウト ファイル 

子のチェックアウト ファイル 

ワークスペース管理ツールの 処置 

g-ファイルと最新デルタが異なる 

 

  • 警告を出す

  • ファイルを処理

g-ファイルと最新デルタが同じ 

 

  • ファイルを処理

 

g-ファイルと最新デルタが同じ 

  • ファイルのチェックアウトなし

  • ファイルを処理

  • ファイルをチェックアウト

 

g-ファイルと最新デルタが異なる 

  • 衝突の発生

 

g-ファイルが読み取り専用 

  • 警告メッセージを出す

  • ファイルを処理しない

「トランザクション出力」ウィンドウ

トランザクションの実行が進むにつれて、「トランザクション出力」ウィンドウにステータス情報が表示されます。ファイルが処理されるたびにメッセージが表示され、実行が完了すると、トランザクション全体の要約情報が表示されます。

衝突

更新ブリングオーバートランザクションでは、よく衝突が検出されます (親と子の両方でファイルが変更された場合)。このような場合には、「トランザクション出力」ウィンドウにその旨を示すメッセージが表示されます。衝突の解決についての詳細は、第 8 章「衝突の解決」を参照してください。

ワークスペースのロック

ワークスペース管理ツールが親ワークスペースのファイルの読み取りおよび検査を行なっているときには、そのワークスペースに対して読み取りロックがかかります。一方、子ワークスペース内のファイルを操作している場合には、書き込みロックがかかります。

複数のワークスペース管理コマンドが同時にワークスペース内のファイルの読み取りを行うと、複数の読み取りロックが発生します。読み取りロックが 1 つでも存在すると、そのワークスペースに対してほかのコマンドを実行して書き込みを行うことはできません。書き込みロックは一度に 1 つしか存在できず、書き込みロックが存在する間、ほかのワークスペース管理コマンドでそのワークスペースに書き込みを行うことはできません。ロックの状態は、各ワークスペース内の Codemgr_wsdata/locks ファイルで管理されています。

ロックされているワークスペースに対してファイルをブリングオーバーしようとすると、そのロックを所有しているユーザーの名前、これらのユーザーが実行しているコマンド、およびロックが発生した時刻を示すメッセージが表示されます。


親ワークスペース: /user/demohost/ws/man_pages
子ワークスペース:  /home/demohost/ws/man_pages_yasue
bringover: 書き込みロックが取得できません。ワークスペース
"/home/demohost/ws/man_pages_yasue" に以下のロックが存在しています:
    ユーザ jack は bringover コマンドを実行中です (pid 20291)
マシン holiday で 9 分
    (エラー 2021)

履歴ファイル

更新ブリングオーバートランザクションに関する情報は、Codemgr_wsdata/history ファイルに記録されます。この情報は、ワークスペースにおいてファイルがどのように変更されてきたかを知りたい場合に便利です。このファイルに関する詳細は、「ワークスペースに関するコマンド履歴の表示」を参照してください。

ブリングオーバー処理の要約

表 7-3 は、ブリングオーバートランザクション実行時にワークスペース管理ツールが行う処理の要約です。

表 7-3 ブリングオーバー実行時の処置

親のファイル 

子のファイル 

ワークスペース管理ツールの処理 

存在する 

存在しない 

子にそのファイルを作成 

存在しない 

存在する 

なし 

変更なし 

変更なし 

なし 

変更なし 

変更あり 

なし 

変更あり 

変更なし 

子のファイルを更新 (SCCS ファイルをマージし、get によって最新のデルタを収めた g-ファイルを取り出す)。

変更あり 

変更あり 

子において SCCS 履歴ファイルをマージし、衝突を発生させ、ユーザーに衝突の存在を通知する。子におけるその時点での作業内容は SCCS ブランチに移動される。