【问题标题】:How To: move symlink keeping the target如何:移动符号链接保持目标
【发布时间】:2011-11-17 00:34:48
【问题描述】:

我需要在动态视图中移动 VOB 内的多个符号链接。

正如我的previous question 中所述,这并不像听起来那么简单(对我而言),因为目标路径是相对于链接本身而不是相对于 VOB 根或类似的东西保存的。这不会是一个大问题,如果 ClearCase 会调整这些链接中的路径信息,但显然不会。

详细信息:假设以下文件夹结构:

/myVOB
  /Originals
  /LinksA
    /SubDir
  /LinksB

然后将指向位于myVOB/LinksB 中的文件myVOB/Originals/readme.txt 的链接移动到myVOB/LinksA/SubDir 将阻止链接找到其目标,因为它正在寻找myVOB/LinksA/SubDir/../Originals/readme.txt

有谁知道在移动符号链接时是否可以告诉 ClearCase 调整路径?通常我会认为这应该开箱即用,但使用 ClearCase 永远不会知道......不过,也许有人可以尝试重现它并告诉我它是否成功,也许这只是我系统上的一个错误?

编辑:好的,看起来移动相对符号链接不支持开箱即用。我是否需要移动大量符号链接,我现在正在编写一个脚本,该脚本需要一些文件/目录并将它们移动到一个新位置。如果遇到符号链接(其目标可能是文件或目录),它不会只调用 cleartool mv 或其他任何东西,而是按照 VonC 发布的过程进行操作。

但我没有,所以我可能会手动执行此操作。也许有人已经写过这样的脚本,那么这将是推广它的正确地方;)

【问题讨论】:

  • 您可能会关心查看Convert absolute path into relative path 以获取有助于操作相对路径和绝对路径的工具。
  • 谢谢,这可能对编写上述脚本的任何人都有帮助(尽管我自己不打算这样做^^)。虽然,特定于 clearcase,但肯定可以让符号链接的目标路径移动并告诉 cleartool 在目标目录中创建指向该目标的新符号链接。所以新的相对路径将由 cleartool 提供。

标签: clearcase symlink


【解决方案1】:

如果您考虑这个technote on "How to Manage symbolic links in ClearCase interop,似乎:
(即使您不在互操作环境中,即即使您的 Windows 视图和 Vob 服务器都在 Windows 上)

  • 符号链接正在使用主相对路径
  • 如果目标路径发生变化,您必须重新创建它们。

如何更改 VOB 符号链接路径

将 VOB 符号链接修改为相对路径的唯一方法是创建新的符号链接

注意:如果 VOB 符号链接是使用绝对路径创建的,则不能编辑(修改)它以利用相对路径。

-查看目录 - 使用cleartool rmelem 命令删除旧的 VOB 链接 - 创建一个同名的新链接

例子:

cleartool ln -slink -nc ../../same_file_name.txt
Check in the directory

注意事项

建议您使用相对 VOB 符号链接,而不是绝对符号链接
绝对 VOB 符号链接要求您使用视图标签级别的绝对路径名,例如,\view-tag\VOB-tag\filename
因此,它们仅在创建它们的视图中有效

【讨论】:

  • 一如既往地感谢@VonC。 “修改 VOB 符号链接的唯一方法 [...] 是创建一个新的符号链接”,这基本上是说“符号链接不能移动,它们需要在源处删除并在目的地重新创建”。我已经调整了我的问题,专门要求解决方法。
  • @SvenS:不客气。但是,在使用具有更改目标的符号链接时,我不知道一个简单的解决方法。
  • 是的,我唯一的想法是使用我将在 GUI 中手动完成的 cleartool 自动执行该过程:查找目标,创建另一个到新文件夹的符号链接,删除旧的符号链接.半个小时就搞定了(对cleartool不太了解),自己写脚本也没用。
猜你喜欢
  • 2012-01-21
  • 2012-04-28
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 2016-01-18
相关资源
最近更新 更多