フォルダの差分上書き

書庫を展開して出来たフォルダを、展開先に移動しようとしたら既に同じ名前のフォルダがあったとします。この場合貴方ならどう対応しますか?というのが今日のテーマ。
Mac OS XのFinderで同じことをやると、上書きするかキャンセルするかのダイアログが出てきて、上書きを選ぶと上書きされます(当たり前)。このとき重要なのは移動先フォルダの中の全てのファイル(フォルダも)は、移動されるフォルダ内のファイルと同名のものがない場合、削除されてしまうことです。
ところがWindowsExplorerで同じようにフォルダの上書きを行うと、移動先フォルダの中の全てのファイル(フォルダも)は、移動されるフォルダ内のファイルと同名のものが存在する場合だけ上書きされて、それ以外のファイルはそのままに残されます。書庫の用途によりますが、最初からWindows風の差分のみの上書きをすることを前提とした書庫の展開をする時に、誤ってMac OS X風の上書きをしてしまうと、たくさんのファイルが入っているフォルダを消してしまうことがあるかもしれません。
残念ながらWindowsシェル風の上書きを行うAPIは見つからなかったので、Cocoaで書きました。サブパス一つ一つについて再起呼び出しで処理を行っているので、デバッグが大変でした。
実際のソースはCVSにそのうち挙げるのでそれを見てください。