2011-11-01 38 views
0

我有一個很大的背景小問題。讓我問一個簡短的版本,然後稍微擴展一下。Perforce - 刪除每個給定更改列表的範圍

我的問題的簡短版本如下。

想象一下 - 你有一個分支A,其中的變更列表爲1000到1004.然後你從變更列表1004中創建分支B,並添加幾個修訂版本(1005,1006)。之後,您需要從分支B中刪除由changelist 1002引入的delta。我該怎麼做?如果我需要分支A - 沒問題,只需回滾到1001並重新集成1003-1004。但是我需要刪除在其歷史記錄中沒有此更改列表的分支上的更改列表引入的增量。那我該如何做這個「選擇性刪除」呢?

我的問題的歌詞背景如下。 早在我是ClearCase工程師的時候,我有時會使用一種名爲'subtractive merge'的功能。我稱之爲「合併」命令,指出了兩個版本來確定一個delta和一個說「像」的標誌(這是幾年前,我忘記了確切的標誌)。它所做的就是不管三角洲何時實際引入,它都會消除指向的三角洲 - 1或一年前落實。所以這是一個減法合併,可以用作回滾而不刪除任何版本,有點「刪除」一些delta。

現在我使用Perforce,我可以看到「回滾」命令,該命令允許創建一個變更列表,將「delta」從「now」移回到我指定的變更列表。這就是Perforce知識庫建議在需要刪除一些增量時做的事情。如果您需要刪除一系列更改列表,則需要將整個更改列表的堆棧從「現在」回滾到前一個更改列表,然後將除了要刪除的更改列表之外的所有內容都集成回來。所以 - 刪除N個更改列表,然後集成N-1個更改列表。我不知道......這對我來說看起來像是一個開銷。

所以我問經驗Perforce的用戶,你知道如何做Perforce的「減法集成」嗎?

預先感謝您。

回答

0

如果我這樣做,我會根據分支A在更改列表1001處創建一個分支C.然後,我將從分支A和B向C分配必要的額外工作,當然,不需要將更改列表1002從A.

+0

這是我已經做了,因爲它是最簡單但直接的解決方案。我只是在尋找「很好」的解決方案:) – Yury

2

將1001(使用-i標誌忽略先前的集成歷史記錄)重新集成到分支B中,並從1001中取得所有更改,在分支B上創建1007更改列表。然後,重新集成1005和1006。除非1005和1006觸及1002-1004中的某些變化,否則您可能必須更具選擇性。

+0

這與官方文檔推薦的方法非常相似 - 回滾(通過強制重新集成)並更新其餘的變更列表。但是這看起來接近我提到的功能,謝謝。 – Yury

+0

無論如何,以某種方式進行減法合併是件好事。 – Yury

+0

這不會錯過1003和1004嗎? – BeeOnRope