1

当我使用 mklink 命令在 Windows 7 中创建符号链接,然后通过 Python 的 os.path.islink() 函数查询该路径名时,该函数正确返回 True。此外,在包含我的链接的目录中调用 dir 命令时,其类型正确显示为<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 不支持重解析点,并且在创建时因参数无效或蓝屏而失败并重新启动系统。

因此,使用快照或动态视图,您的 python 脚本最好执行 acleartool ls并解析结果以检测 ClearCase 符号链接。

于 2013-10-30T16:38:15.027 回答