ワークスペース間でファイルを転送 (ブリングオーバーまたはプットバック) するためには、親と子の両方が同じファイルシステムにマウントされている必要があります。ファイルシステムの接続には、オートマウンタを使用することができます。
適切なワークスペースを設計するためには、単層階層と複層階層の利点と欠点を理解している必要があります。
単層ワークスペース階層では、多数の開発者が 1 つの統合ワークスペースにファイルをプットバックします。単層階層の利点は、開発者がお互いのファイルに直接アクセスできる点にあります。開発者 A が統合ワークスペースに自分のファイルをプットバックした時点で、開発者 B は、更新ブリングオーバートランザクションを使用して、開発者 A が変更した内容にすぐにアクセスすることができます。
単層階層では、統合ワークスペースの内容が頻繁に変更されるため、各開発者は自分のソースを最新の状態に保つためにブリングオーバートランザクション、構築、テストを頻繁に行う必要があり、時間が無駄になるという欠点があります。最初の開発者がプットバックを実行すると、その変更内容だけが統合ワークスペースで更新されます。次に 2 番目の開発者がプットバックを実行すると、この開発者と前回の変更の 2 組の変更内容が統合ワークスペースに反映されます。以下同様に作業が進められ、最後にプットバックトランザクションを実行する開発者は、それ以前にこのグループ内で行われたすべての変更が反映されるように統合ワークスペースを更新しなければなりません。
統合ワークスペースと開発ワークスペースの間に副統合ワークスペースの層を置くことによって、開発者が自分の変更内容を統合ワークスペースへプットバックするために必要な時間を、大幅に削減することができます。
ある開発者が統合ワークスペースに変更ファイルをプットバックした場合、ほかの開発者は、その変更内容を自分のワークスペースにブリングオーバーし、モジュールを再構築し、自分が加えた新しい変更内容をテストしてからでないと、プットバックトランザクションを実行できません。このように、プットバックが頻繁に行われると、それだけ衝突の発生する可能性は大きくなります。
プロジェクトに多数の開発者が関わっている場合は、ブリングオーバー、再構築、テストという作業は、煩雑で時間のかかるものになります。そこで、関連するコードを分担する少人数の開発者グループが、副統合ワークスペースで作業を行うようにすれば、そのワークスペースは比較的安定した状態になり、構築とテストに費やす手間や時間を軽減することができます。もちろん、副統合ワークスペース自体の内容を共通の統合領域にプットバックする際には、ほかの開発用ワークスペースでの変更内容をすべて統合しなければなりません。ただしほとんどの場合、統合作業の単位を大きくして回数を減らした方が、全体の作業は効率化されます。
副統合ワークスペースをいくつか使用する複層階層には、次の欠点があります。
新規ワークスペースを追加するたびに、大きなディスク領域が必要になる。
各開発者が同じ統合ワークスペースにプットバックを行わないため、定期的にほかの開発者の作業を確認することが困難になる。
副統合ワークスペースを上位の統合ワークスペースに統合する作業は、小さな単位で頻繁に統合作業を行う場合よりも、複雑になることがある。