如何在文件被劫持时获取路径到changeset的前一版本文件?

时间:2014-11-14 02:23:55

标签: unix command-line clearcase cleartool

在UNIX下使用cleartool,如果我在快照视图中有一个未经修改的文件(例如仍然签入,未签出,未被劫持), 我可以用这个成功地获得它的前身版本:

$ cleartool describe -predecessor -short file.c
/main/ABC_int/ABC_STAGING/user_ABC_STAGING_dev1/9

在这种情况下没问题。

但是,如果文件碰巧被劫持(这种情况经常以我的工作方式发生),那么cleartool描述拒绝给我它的前身版本:

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".

如何在文件被劫持时获取文件的变更集前驱版本路径?

有没有不同的方法来做到这一点:

  1. 备份被劫持的文件("cp file.c file.c.backup"),
  2. 运行"cleartool update -overwrite <file>"取消劫持,
  3. 在其上重新运行cleartool describe命令行以获取未被劫持的文件("cleartool describe -predecessor -short file.c")上的前任,
  4. 然后再次重新劫持它("chmod 666 file.c"),
  5. 最后在其上移动备份(&#34; mv file.c.backup file.c&#34;)?
  6. 谢谢!

1 个答案:

答案 0 :(得分:0)

一个简单的解决方案是让dynamic view具有与当前快照视图相同的配置规范。

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

cleartool descr -pred -short /view/yourDynamicView/vobs/AVob/path/to/files.c

您仍然可以在快照视图中正常工作,但您可以依靠动态视图来获取所需的信息。


The OP确认in the comments

  

它有效!

     
      
  1. 使用以下命令创建临时动态视图:
  2.   
cleartool mkview -tag <dynview_tagname> -stream <mystream@/myPVOB> -stg -auto
  
      
  1. 获取被劫持文件的前身:
  2.   
cleartool describe -predecessor -short /view/<dynview_tagname>/vobs/<path>/file.c
  
      
  1. 使用以下方法销毁临时动态视图:
  2.   
cleartool rmview -tag <dynview_tagname>