在我的項目中,我們有些情況下從主流中爲Beta和候選版本等重要里程碑分支。UCM Clearcase中的「交付到替代目標」和「合併」之間的區別
一旦我們將構建發佈給客戶,我們將代碼合併回主流。這是一個簡單的交付操作,沒有rebase。
現在,當我們需要將一些非常舊的流(幾乎已過時)合併到主流中時,也會出現這種情況。我已經發現了兩個方案可供選擇:
1)交付到替代目標
2)合併管理
選項1)是不允許在我們的項目。
我的問題是:
兩者有什麼和爲什麼要一個優於其他的有什麼區別?
在我的項目中,我們有些情況下從主流中爲Beta和候選版本等重要里程碑分支。UCM Clearcase中的「交付到替代目標」和「合併」之間的區別
一旦我們將構建發佈給客戶,我們將代碼合併回主流。這是一個簡單的交付操作,沒有rebase。
現在,當我們需要將一些非常舊的流(幾乎已過時)合併到主流中時,也會出現這種情況。我已經發現了兩個方案可供選擇:
1)交付到替代目標
2)合併管理
選項1)是不允許在我們的項目。
我的問題是:
兩者有什麼和爲什麼要一個優於其他的有什麼區別?
簡單:
deliver to alternate target
(或deliver to default
對這個問題)是一個UCM合併,它必須遵循的規則UCM,特別是關於活動的相關性,而且還涉及流(你不應該deliver
從父流了孩子流,這應該是一個rebase
)
Merge Manager
是一個普通的ClearCase的合併,兩個分支之間(而不是流),它可以從分支A
傳送文件的任何子集分支B
,而不必遵循任何merge workflow。
我平時看到的「合併管理器」選擇了其中UCM防止因交付的神祕「活動依賴」的原因的情況下,即使是沒有的。
有關這種情況的示例,請參閱「Clearcase UCM - Cross delivering vs. delivering upwards?」。
說「deliver to alternate target
」是不允許的,意味着只有deliver to default
是,這意味着你必須遵循由層次結構建立的合併工作流。
UCM合併帶來了baselines之間的合併更好的可視化,這意味着您知道全部給定組件合併的文件。
但是,合併管理器是一個純合併,它可以涉及任何兩個分支和任何兩個(或更多)文件。該合併沒有更高的可見性:它是一個逐個文件的操作(而不是一個組件 - 或一組連貫的文件 - 一個)。
你是說我們可以在合併管理器中忘記分支關係嗎? – msiyer
@msiyer剛剛編輯我的答案,以解決這一問題 – VonC
感謝VonC的幫助。 – msiyer