【问题标题】:Find moved files in ClearCase activities在 ClearCase 活动中查找移动的文件
【发布时间】:2013-01-15 18:20:36
【问题描述】:

我正在编写一个脚本,将我工作场所中的一个项目从 ClearCase 转换为 Mercurial + Jira。我在移动文件时遇到问题。我正在使用“lsact -long”来更改活动中的文件。问题是,例如,当一个目录被重命名时,更改仅在其父目录中很明显,并且它与“描述”一起列出,如下所示:

添加了目录元素“new_name”。 未编目的目录元素“old_name”

问题在于,它没有明确指定目录已移动,因此可能有人删除了旧目录并创建了新目录。

我如何知道文件是否在目录变更集中被移动?

【问题讨论】:

    标签: clearcase cleartool


    【解决方案1】:

    对于任何向 Mercurial 或 Git 的迁移,我从不关心这些信息。

    我只需从 ClearCase 中选择一个一致的修订(UCM 基线或完整标签),然后将其添加到存储库(Hg 或 git)。
    我一个接一个地重复这个过程。

    Hg 或 Git 会自动检测重命名(文件或目录)。

    换句话说,VCS 记录的任何元数据都不会在 Git 或 Mercurial 中按原样进行翻译。
    关于重命名,这些 DVCS 将分析它们各自的修订并推断出重命名,如果您要求,导入所有内容之后,并且在使用您的存储库时(例如 git diff -M 或 @987654327 @。

    话虽如此,如果您想告诉 Hg 元素已移动(如“How to rename a directory in Mercurial and continue to track all file changes”),您可以检查(如果尚未修剪)该父目录的事件历史记录,或者"new_name":

    cleartool lshist -long ...
    

    这些事件可能记录了重命名或移动操作。

    【讨论】:

    • 关于迁移 - 当我们迁移时,我们希望 Mercurial 中的提交粒度理想地成为 ClearCase 活动 - 即,每个“ChangeRequest”(不确定这是“全局”CC 术语还是我们自己的定义)应该是 Mercurial 中的一个提交。
    • @AmirRachum ClearCase 活动是一个很好的单元,但最终太复杂而无法跟踪(尤其是在交付/重新设置活动时,它掩盖了贡献活动(stackoverflow.com/a/13565533/6309stackoverflow.com/a/14022262/6309)。
    • @AmirRachum 我只是选择基线,从最旧到最新,确保它们是完整基线,然后将它们的内容复制到 Hg 工作区,提交每个基线。您只需要记住“每个 UCM 组件一个 repo”(而不是尝试将所有内容导入一个 Hg repo)。
    • 如何选择基线?我对CC不是很熟练。如何创建包含某个基线内容的目录?
    • @AmirRachum 首先,您使用的是 ClearCase UCM,还是只使用基本的 ClearCase? (stackoverflow.com/a/10614843/6309)
    猜你喜欢
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多