2014-11-14 48 views
1

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

我怎樣才能得到變更先前版本PA當它被劫持時文件的第三個字節?

是否有不同的方法,這樣做比:

  1. 採取劫持文件("cp file.c file.c.backup")的備份,
  2. 運行"cleartool update -overwrite <file>"於未劫持它,
  3. 重新運行cleartool描述命令行上獲得的未劫持文件("cleartool describe -predecessor -short file.c")的前身,
  4. 再轉劫持它("chmod 666 file.c"
  5. 和FIN盟友將備份移到它上面(「mv file.c.backup file.c」)?

謝謝!

回答

0

一個簡單的解決方案是讓dynamic view具有與當前快照視圖相同的配置規範。

儘管快照視圖中的文件狀態可能不允許獲取其先前版本,但動態視圖中引用的文件將會相同。

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

在快照視圖中,您仍然照常工作,但您依賴動態視圖來獲取所需信息。


The OP證實in the comments

it works!

  1. Create temporary dynamic view with:
cleartool mkview -tag <dynview_tagname> -stream <[email protected]/myPVOB> -stg -auto 
  1. Obtain predecessor of hijacked file with:
cleartool describe -predecessor -short /view/<dynview_tagname>/vobs/<path>/file.c 
  1. Destroy temporary dynamic view with:
cleartool rmview -tag <dynview_tagname> 
+0

有趣的想法。不過,我願意爲此編寫腳本以使其更容易。你介意指示命令行來創建一個動態視圖,並且還要銷燬一個動態視圖嗎? – user972301

+0

@ user972301:http://stackoverflow.com/a/1367656/6309適用於'cleartool mkview'示例。'cleartool rmview'將其刪除(http://www-01.ibm.com/support/knowledgecenter/SSSH27_7.1.2/com.ibm.rational.clearcase.cc_ref.doc/topics/ct_rmview.htm?cp=SSSH27_7。 1.2%2F8-0-0-1-63)。 – VonC

+0

感謝VonC,當我在本週訪問clearcase時會給出這個鏡頭。 – user972301