1

Windows 7 で mklink コマンドを使用してシンボリック リンクを作成し、Python の os.path.islink() 関数を使用してそのパス名を照会すると、関数は正しく True を返します。また、私のリンクを含むディレクトリで dir-command を呼び出すと、そのタイプは として正しく表示され<SYMLINK>ます。

ただし、ClearCase のシンボリック リンク (cleartool ln -s ... で作成) を使用すると、os.path.islink() は常に False を返し、Window の dir コマンドは要素を通常のファイル (つまり、<SYMLINK>属性なし) として表示します。

ディレクトリ ツリー (ClearCase の制御下にある場合とそうでない場合があります) に再帰的に降りるスクリプトを作成しているため、これは問題です。無限の再帰を回避できるようにするためには、 directory は、実際のディレクトリまたは別のディレクトリへの単なるシンボリック リンクです。同様に、同じファイルを複数回処理しないように、ファイルへのシンボリック リンクも処理できる必要があります。

他の誰かがこの問題に遭遇しましたか? ちなみに、ClearCase v7.1.2.7を使用しています。

4

1 に答える 1

1

このテクニカルノート に記載されているように、ClearCase リンクは Windows mklink とは異なります。

C:\>mklink /D link_name Y:\<vobtag>\dir3 
symbolic link created for link_name <<===>> Y:\<vobtag>\dir3
>cd link_name
>cleartool ls 
(system crash)

原因

「ポイントの再解析」機能により、mklink が生成したリンクが作成されました。再解析ポイントは NTFS に実装されていますが、MVFS 自体には実装されていません

スナップショット ビューを使用する場合、通常は NTFS ファイル システムにファイルが格納されます。これが、そのような状況で mklink がエラーなしで動作する理由です。

動的ビューを使用すると、要求はターゲット ファイル システムとして MVFS に送信されますが、NTFS にはビューと VOB が格納されます。MVFS は再解析ポイントをサポートしておらず、作成時に無効なパラメーターで失敗するか、BSOD で失敗し、システムを再起動します。

したがって、スナップショットまたは動的ビューでは、Python スクリプトで を実行しcleartool ls、結果を解析して ClearCase シンボリック リンクを検出する方がよいでしょう。

于 2013-10-30T16:38:15.027 に答える