Sun WorkShop TeamWare ユーザーズガイド

子から親へのファイルのコピー (プットバック)

ワークスペース管理ツールのトランザクションはすべて、子ワークスペースの側からの視点で実行されます。プットバックトランザクションは、子から親にファイルを戻します。

プットバックトランザクションは、親ワークスペースと子ワークスペースの内容を同一にするときに使用します (指定したファイルの内容が同じになります)。子ワークスペース内で変更を行い、そのテストを終えた後、プットバックトランザクションを実行します。通常、ファイルを親に戻すと、以後ほかの開発者はそれらのファイルをアクセスすることができるようになります。

プットバックトランザクションの実行時には、子から親にファイルをコピーすると、親のデータの整合性が損なわれる危険性が検知されることがあります。このような場合には、ファイルはコピーされず、プットバックトランザクションは中止されます。プットバックトランザクションが中止されるのは、次のような場合です。

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

プットバックによる親ワークスペースの更新

プットバックのトランザクションウィンドウは、次の方法で開くことができます。

プットバックトランザクションを実行するには:

  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. コメントを入力する。

    実行するプットバックトランザクションに関するコメントを入力します。このコメントは、親ワークスペース内の Codemgr_wsdata/history ファイルに書き込まれるトランザクションログと一緒に記録されます。コメントの長さは 8K バイト以内にしてください。

  6. 「プットバック」ボタンをクリックして、トランザクションを実行する。

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

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

ワークスペース管理ツールは、プットバックトランザクションの実行時に、親ワークスペースで SCCS からチェックアウトされたファイルを検出すると、それらのファイルの整合性を保つために表 7-4 のような処置を行います。

表 7-4 プットバックにおけるチェックアウトファイルの状態と処置

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

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

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

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

 

  • プットバックトランザクションを中止する

g-ファイルと最新デルタが同じ (または g-ファイルが存在しない) 

 

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

  • ファイルを処理

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

 

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

  • プットバックトランザクションを中止する

 

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

  • ファイルを処理

 

g-ファイルが存在しない 

  • 警告メッセージを出す

  • ファイルを処理する

  • 変更は行わない

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

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

ワークスペースのロック

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

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

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


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

履歴ファイル

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

プットバック処理の要約

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

表 7-5 プットバック実行時の処置

親のファイル 

子のファイル 

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

存在する 

存在しない 

プットバックを中止し、ユーザーに通知 

存在しない 

存在する 

親に該当ファイルを作成 

変更なし 

変更なし 

なし 

変更なし 

変更あり 

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

変更あり 

変更なし 

プットバックを中止し、ユーザーに通知 

変更あり 

変更あり 

プットバックを中止し、ユーザーに通知 

チェックアウト 

チェックアウト [親または子のいずれかでファイルがチェックアウトされていると、プットバックトランザクションは中止されます。チェックアウトされたファイルのプットバックについては、表 7-4 を参照してください。]

プットバックを中止し、ユーザーに通知 

衝突あり 

衝突あり [親または子のいずれかに衝突が存在すると、プットバックトランザクションは中止されます。]

プットバックを中止し、ユーザーに通知