我問了幾天前how to commit an arbitrary directory tree in ClearCase,我收到的答案是使用clearfsimport
工具。這在目前的完美無缺,並可以「進口」到ClearCase中(到動態視圖)任意目錄樹(從一些外部的文件系統目錄):如何在任意目錄樹上執行更新
clearfsimport -recu -nset /some/external/directory/foo .
我的工作流程是,我做我所有的工作,在外部目錄(foo
)中測試,當我很高興時,我使用上述的clearfsimport
工具將我的源代碼提交給ClearCase。到目前爲止,這在最初的提交中起作用,但現在我發現自己想要導入修改過的源代碼。實際上,我需要導入一個新的目錄樹來代替現有的foo
目錄。這些更改可能是普遍的:添加,刪除或重命名文件/目錄,更改爲目錄或符號鏈接的文件(反之亦然)。實際上,我們可能會討論兩個非常不同的目錄樹,其中有非常詳細的diff -r
輸出。
我打算使用下面的工作流程:
ct co .
ct rm foo // remove existing dir from view
ct ci .
clearfsimport -recu -nset /some/external/directory/foo . // import the new dir version
你能看到歷史等方面與上述方法有問題?
充分披露我保持我的項目(在/some/external/directory
)使用Git,所以我跑clearfsimport
(刪除特定的git-文件如.git
,.gitignore
等)之前創建我的項目的一個「乾淨」的副本。我通常在git中有更詳細的歷史記錄,但我只對維護ClearCase中特別值得注意的「里程碑」的歷史記錄感興趣,其他團隊成員可能想查看我的代碼及其隨着時間的演變。話雖如此,我不想(至少暫時)使用任何工具將git與ClearCase聯繫起來,並且更願意將事情簡單化。
我澄清,我試圖建立的工作流程只是一種方式(外部目錄到ClearCase),我將導入到動態視圖中。
縱觀手冊頁clearfsimport
我看到像被提及「兩遍」和像-rmname
選項,使我的東西,它有可能只是運行clearfsimport
與目標作爲一個現有目錄結構(即不首先必須要有ct rm
)。但我不確定哪個咒語正確使用,以及它是否可以處理給定名稱以各種方式(例如從文件到目錄,從目錄到符號鏈接或從符號鏈接到文件)進行更改的情況,或者如何處理重命名歷史。
我只是有點不安的是'clearfsimport'會做正確的事情,當涉及到的名字,其類型已改變(例如從文件到符號鏈接或從符號鏈接到目錄),這就是爲什麼我認爲'ct rm'會導致一個乾淨的石板。但我明白你的答案是說只要信任'clearfsimport'做正確的事情... –
@MarcusJuniusBrutus我同意,這需要嵌套邊緣情況下,但一般來說,'clearfsimport'是爲這個用例。 – VonC
@MarcusJuniusBrutus rm的問題是你完全失去了所有已修改的公共文件的歷史。 ClearCase會將它們視爲沒有歷史記錄的新元素。 – VonC