在VBA中检查ClearCase版本是否存在

3

我编写的Excel VBA脚本需要循环遍历一个ClearCase元素的所有版本,以确定其是否合并。但当使用 rmver 命令删除某一版本时会导致失败(虽然不推荐使用破坏性删除,但我们在极少数情况下会使用它来解除开发人员的依赖关系)。

在DOS中,以下命令可正常工作:

IF EXIST M:\View\LAMI\build.xml@@\main\lc_adhoc_dev\3 ECHO Yes
Yes

为了在VBA中做到这一点,我尝试使用Dir方法来检查特定版本是否存在:
Dim elementVersion As String
elementVersion = "M:\View\LAMI\build.xml@@\main\lc_adhoc_dev\3"

If Len(Dir(elementVersion)) > 0 Then
  ' Version exists
Else
  ' Version does not exist
End If

然而,这会导致一个错误:“文件名或编号错误”:
我还尝试了fso对象的FileExists方法:
Dim elementVersion As String
elementVersion = "M:\View\LAMI\build.xml@@\main\lc_adhoc_dev\3"
Dim fsoObj As Object
Set fsoObj = CreateObject("Scripting.FileSystemObject")

If fsoObj.FileExists(elementVersion) = True Then
  ' Version exists
Else
  ' Version does not exist
End If

然而,该调用总是返回 False。看起来所有这些方法在处理ClearCase MVFS虚拟M:驱动器时存在问题。我还能尝试什么其他方法吗?


我会在几个小时内发布答案,但是请查看 cleartool get(http://stackoverflow.com/a/5381646/6309):如果您可以获取并复制旧版本到 C:\ 驱动器,则该版本存在。如果 cleartool get 失败...则该版本不存在。 - VonC
cleartool get 只适用于文件。我还需要检查目录的不存在版本(我更新了我的问题:将“文件”更改为“元素”)。 - Jozef
此外,我正在尝试不依赖于Err对象,即不使用在遇到不存在版本时失败的cleartool命令(例如get或descr)。 - Jozef
我正要建议使用“描述”这个词。 - VonC
在您的情况下,您应该依赖于错误。 - VonC
1个回答

1

我想在运行描述之前确保特定版本存在!有趣的是,这可以在DOS批处理中完成而无需使用错误处理程序,但在VBA中却不能。我猜我别无选择,只能使用Err对象。 - Jozef
1
@Jozef 我明白。但是在这里,“describe”既用于检查其是否存在,又用于描述它(如果存在)。 - VonC
1
如果您正在使用32位Excel,您可能需要查看ClearCase自动化库(CAL)。“doc”是C:\ Program Files(x86)\ IBM \ RationalSDLC \ ClearCase \ bin中的cc_cal.chm文件...这不幸意味着您需要安装帮助文件查看器。 - Brian Cowan
@VonC 我在这些脚本中也使用CAL(我通过cleartool对象传递大多数命令)。我只想防止当特定版本不存在时,cleartool descr命令生成错误。由于显然没有办法做到这一点,我的初始问题得到了解答。我检查Err.Number的值以查看版本是否存在,不再在不存在版本时退出脚本。 - Jozef

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接