Unix 当文件被劫持时,如何获取文件的变更集前置版本的路径?

Unix 当文件被劫持时,如何获取文件的变更集前置版本的路径?,unix,command-line,clearcase,cleartool,Unix,Command Line,Clearcase,Cleartool,在UNIX下使用cleartool,如果快照视图中有未修改的文件(例如,仍然签入、未签出、未被劫持), 我可以通过以下方式成功获得其前身版本: $ cleartool describe -predecessor -short file.c /main/ABC_int/ABC_STAGING/user_ABC_STAGING_dev1/9 那样的话没问题 但是,如果文件碰巧被劫持(这在我的工作方式中经常发生),ClearToolDescripte拒绝给我它的前一个版本: a) 以下两行模拟劫持:

在UNIX下使用cleartool,如果快照视图中有未修改的文件(例如,仍然签入、未签出、未被劫持), 我可以通过以下方式成功获得其前身版本:

$ cleartool describe -predecessor -short file.c
/main/ABC_int/ABC_STAGING/user_ABC_STAGING_dev1/9
那样的话没问题

但是,如果文件碰巧被劫持(这在我的工作方式中经常发生),ClearToolDescripte拒绝给我它的前一个版本:

a) 以下两行模拟劫持:

$ chmod 666 file.c
$ touch file.c
b) 然后,如果在同一文件上再次尝试相同的命令行:

$ cleartool describe -predecessor -short file.c
cleartool: Error: -predecessor invalid for non file system objects: "file.c".
当文件被劫持时,如何获取文件的变更集前置版本路径

有没有其他方法可以做到这一点:

  • 对被劫持的文件进行备份(
    “cp file.c file.c.backup”
  • 运行
    “cleartool更新-覆盖”
    取消劫持
  • 在其上重新运行cleartool descripe命令行,以获取未被劫持文件的前置文件(
    “cleartool descripe-preference-short file.c”
  • 然后再次劫持它(
    “chmod 666 file.c”
  • 最后将备份移到它上面(“
    mv file.c.backup file.c
    ”)

  • 谢谢

    一个简单的解决方案是使用与当前快照视图相同的配置规范

    虽然快照视图中的文件状态可能不允许获取其先前版本,但动态视图中引用的同一文件将被删除

    cleartool descr -pred -short /view/yourDynamicView/vobs/AVob/path/to/files.c
    
    您仍然可以在快照视图中像往常一样工作,但是您将依赖动态视图来获取所需的信息


    确认:

    它起作用了

  • 使用以下内容创建临时动态视图:
  • cleartool mkview-tag-stream-stg-auto
    
  • 使用以下内容获取被劫持文件的前身:
  • cleartool description-preference-short/view//vobs//file.c
    
  • 使用以下命令销毁临时动态视图:
  • cleartool rmview-标记
    
    有趣的想法。不过,我愿意为它编写脚本,使它更容易。您是否介意指示创建动态视图和销毁动态视图的命令行?@user972301:for
    cleartool mkview
    示例
    cleartool rmview
    删除它()。感谢VonC,当我本周访问clearcase时,我会尝试一下。好的,它可以工作了!1) 使用
    cleartool mkview-tag-stream-stg-auto创建临时动态视图
    2)使用
    cleartool description-preference-short/view//vobs//file.c
    3)使用
    cleartool rmview-tag
    销毁临时动态视图。谢谢VonC@user972301非常好的反馈!我已将您的解决方案包含在答案中,以提高可见性。
    cleartool mkview -tag <dynview_tagname> -stream <mystream@/myPVOB> -stg -auto
    
    cleartool describe -predecessor -short /view/<dynview_tagname>/vobs/<path>/file.c
    
    cleartool rmview -tag <dynview_tagname>