テクニカルノート042  


空のディレクトリを削除する

タスク

PERFORCEに空のクライアント・ワークスペースのディレクトリを削除させるには、どうすればよいでしょうか。

解決策

PERFORCEは、ユーザが削除コマンドを使用するか、削除されたリビジョンを取得すると、ワークスペースのディレクトリからファイルを削除します。しかし、デフォルトではこれらのファイルの削除後に、空になったディレクトリを削除しません。
ユーザが行っている作業によっては、PERFORCEが残しておくその空のワークスペース・ディレクトリを、他のツール(コンパイラ、Webオーサリングツールなど)によって作成されたファイルが、必要とするかもしれません。
ディレクトリを空の状態にするコマンドの実行後に、ワークスペースのディレクトリを削除するには、ワークスペース仕様でrmdirオプションを使用します。デフォルトのオプションであるnormdirを使用すると、ワークスペース内の空ディレクトリは未処理のまま残されます。

Windows ジャンクション

警告: ワークスペース仕様オプションの"rmdir"により、Windows環境のディレクトリ・ジャンクション・マップによるマッピングは解除されます。

Windowsユーザの一部は、ジャンクションと呼ばれる一種の隠されたシンボリックリンクを利用しています。Windows 2000 サーバのリソース・キットなどには、linkd.exeと呼ばれるユーティリティがあり、SysInternal のウェブサイト http://www.microsoft.com/technet/sysinternals/FileAndDisk/Junction.mspx には、junction.exeというUNIX形式のシンボリックリンクに類似したNTFSシンボリックリンクを作成できるユーティリティがあります。これらは単なるWindowsショートカットではなく、実際のシンボリックリンクです。

残念ながら、ジャンクションによってマッピングされたディレクトリを削除しようとすると、ジャンクションがアンマウントされるか、破壊されます。したがって、ワークスペース仕様でrmdirオプションを使用すると、ディレクトリ全体が突然表示されなくなる可能性があります。

99.2以前のリリース

PERFORCE 99.2以前のリリースでは、不必要な空のワークスペース・ディレクトリを削除したい場合には、手動で処理しなければなりません。
 
  • UNIX環境では、空のワークスペース・ディレクトリ(そして空のディレクトリのみ)をすべて削除するには、ワークスペースのルートから次のコマンドを実行できます。
    	find . -type d -depth -print | xargs rmdir
  • Windows環境では、ディレクトリ構造が空であるかどうかを確認するには、エクスプローラ上でディレクトリを右クリックし、メニューから[ファイル]>[プロパティ]を選択します。コマンドプロンプトでは、次のコマンドを実行してディレクトリ構造が空であるかを診断することができます。
    	dir /s dirname
戻る