Windows 上快照视图中令人讨厌的符号链接问题

Nasty symlink issue in snapshot views on Windows

在我们公司,我们在 Windows 上使用 ClearCase。由于动态视图对我们来说非常慢,我们主要使用快照视图。

今天我们在 Windows 的快照视图中发现了一个关于符号 link 的非常讨厌的问题。

众所周知,在快照视图中(至少在 Windows 上)ClearCase 模型 symlinks 不是通过实际文件系统 symlinks 而是简单地作为副本。也就是说,如果你的原始文件是 /myVOB/dir/fileA.txt/myVOB/anotherDir/fileA.txt 是一个符号 link 对于前者,在快照视图中,前者和后者只是彼此相同的副本。现在的问题是,如果您签出并编辑原始文件(可能作为合并操作的一部分),则更改不会反映在指向该文件的任何 symlink 中。即使是视图更新也不会改变......它会在您签入更改之后发生,但不会在之前发生,这是一个大问题,因为我们使用的是自动合并更改的自动门控签入从源分支到快照视图,运行构建和任何后续测试,并且仅在构建和所有测试成功时才继续签入更改。

由于上述问题,我们发现门控签入(即构建和测试)有可能成功,即使合并的更改会导致它失败。发生这种情况所需要的只是构建引用更改的文件或目录,而不是通过其真实的原始路径,而是通过 symlink,这将导致它看到原始的、未更改的而不是更改的、合并的版本.

除了 "Just use dynamic views" 之外,还有其他人知道如何解决此问题吗?

考虑symbolic link on Windows in ClearCase snapshot views时,似乎没有什么灵丹妙药

一个解决方法是拥有那些符号 link 的列表(假设该列表是相对静态的并且不经常更改)并且在每个 build/test 之前复制原始文件(如果cleartool diff 与引用它的那些符号 link 显示任何差异。

antred adds :

Here's our final solution:

Perform the merge in a DYNAMIC view, do NOT check in.
Use robocopy to sync the view to a storage location on a hard drive (relatively fast), then run the build / tests from there.
If it succeeds, check-in changes in dynamic view; else undo checkouts. :)