2009-06-15 49 views
2

我以前的documented我對Clearcase作爲源代碼控制系統的看法,但不幸的是我仍然在使用它。所以我請你們幫助我緩解我的挫折之一。如何最好地在Clearcase中分支?

我們剛剛從每個開發者系統的一個分支轉移到每個任務的一個分支,試圖改進我們一直在確定某些文件被更改的原因時遇到的一些問題。一般來說,我對解決方案感到滿意,但有一個主要問題。我們使用簡單的腳本來開始和結束,營造出與用戶名和任務編號命名新的分支任務,然後更新本地快照視圖有類似如下的配置規範:

 
    element * CHECKEDOUT 
    element * .../martin_2322/LATEST 
    element * /main/LATEST -mkbranch martin_2322 
    load /Project/Application 

比方說,我的項目有兩個耦合文件A.cs和B.cs.對於我的第一個任務,我對分支上的A進行了更改。然後,無論出於何種原因,我都需要停止在任務2322上工作,並開始執行任務2345(任務2322未完成,因此我不會將它合併回主)。 我創建一個新的任務分支2345,編輯A.cs和B.cs並將結果合併回主。現在我回到2322工作,所以我改變了我的配置規範回到上面定義的。此時,我看到任務分支中的A.cs文件(正如我之前編輯它的,因此我得到該分支的本地版本)以及來自main的B.cs的最新版本。由於我沒有對2345分支上的A.cs所做的更改,所以構建中斷。我需要的是能夠從我離開的地方拿起任務2322,並使用舊版本的A.cs來查看它 - 當分支被創建時,它是主要的最新版本。

我看到它的方式,我有幾個選項來解決這個問題:

  • 更改配置規範,使其從主在正確的日期越來越文件。如果我知道日期並且不介意手動設置它,這很容易,但我無法弄清楚如何將它自動化到我們的任務切換腳本中。無論如何得到分支的創建日期?

  • 爲main上的每個分支創建一個標籤。理論上很簡單,但我們安裝的CC中的標籤系統已經在數百個標籤的重量下崩潰了,所以我不知道它是否會應付每個分支的每個開發人員(請注意,我的示例中的任務是2322,我們只是通過該項目的四分之一)

  • 從主合併到任務分支。再一次應該工作,但長時間運行的分支將不僅包含爲該任務更改的文件,而且還需要合併所有需要合併的文件以獲取不相關的內容。這使得它們像每個開發者分支的方法一樣複雜。我想查看哪些文件已更改爲完成特定任務。

我希望我只是失去了一些東西在這裏和那裏是我的設置配置規範,使得其檢索來自主期望的文件,而不笨重變通的方式。那麼,你們如何在Clearcase中分道揚??

+0

剛剛添加了另一種解決方案(IMO)來管理分支之間的切換。 – VonC 2009-06-15 18:35:29

+0

剛剛添加了關於「新文件」選擇規則的評論。在繼續使用當前的配置規範之前,必須仔細檢查和理解。 – VonC 2009-06-15 19:49:53

回答

1

您可以通過在cleartool中使用描述命令來獲取分支的創建日期。

cleartool describe -fmt "%d" -type martin_2322 

這將打印出創建分支的日期和時間。你可以用它來實現你的第一個選項。有關更多信息,可以閱讀以下cleartool手冊頁,但希望上述命令是您所需要的。

cleartool man describe 

cleartool man fmt_ccase 
1

我們使用Clearcase,我們發現爲一個版本創建一個分支通常比通過任務創建分支容易得多。如果你是通過任務創建的,那麼我會爲該版本創建一個「主分支」,並將任務從該分支中​​分離出來,然後在完成後將它們合併回主幹。

+0

您對主要分支/分支的發佈/分支的任務/建議正是我們正在做的,但是這導致了上面列出的問題,您不能真正在兩個任務並行工作。我們每個開發人員都在分支,這意味着我們沒有得到這些問題,因爲所有任務都在同一個分支中,但由於Clearcase中沒有「工作單元」概念,因此無法確定哪些更改屬於哪個任務。 – 2009-06-15 14:52:27

+1

是的,你可以。創建兩個視圖,每個「任務」都有一個視圖。然後,您可以使用diff工具和將更改合併到一個分支的端口更改的功能。 – 2009-06-15 14:54:41

4

幾點意見:

  • 每個任務的一個分支是一個「工作單位」內修改一組文件的合適的粒度。提供的「任務」是不是太狹窄,否則你最終分支(及其關聯合並)的gazillon

  • 當你創建一個分支配置規範,您顯然忘記元素行(你「添加到源代碼管理」的那個)

  • 另外你可能會考慮分支修復的起點,這將解決「A.cs的舊版本 - 當分支是最新版本的時候創造「位。
    我知道你已經有太多標籤了,但是你可以有一個腳本來「關閉」一個可以(除其他之外)刪除該起始標籤的任務,避免標籤混亂。

這裏配置規範,我會用:

element * CHECKEDOUT 
element * .../martin_2322/LATEST 
element * STARTING_LABEL_2322 -mkbranch martin_2322 
# selection rule for new "added to source control" file 
element * /main/0 -mkbranch martin_2322 
load /Project/Application 

我會覺得這遠遠超過計算的一個分支日期更加容易。

  • 不要忘記你可以在你的任務,你的一些文件,從已完成的任務跳轉到新的當前任務的分支合併回主,合併爲好,如果你需要加裝一些你的修改回目前的任務也是如此。
相關問題