2015-11-02 127 views
1

回退的變更表我在Perforce公司變更列表如下:Perforce公司 - 如何從主分支

1 - some work on //depot/A/file 
2 - some work on //depot/A/file 
3 - branching of //depot/A to //depot/B 
4 .... - some work on //depot/A/file 

而且我想在//depot/B反回changelist 2

我嘗試以下操作:

p4 sync //depot/B/[email protected] 
p4 edit //depot/B/file 
p4 sync //depot/B/[email protected] 
.... 

但出現錯誤的第一道防線。

//depot/B/[email protected] - no file(s) at that changelist number. 

有沒有什麼辦法如何實現這個沒有提交到//depot/A分支?

回答

3

這是我會怎麼做:

p4 copy //depot/A/[email protected] //depot/B/... 
p4 submit 
p4 merge //depot/A/[email protected] //depot/B/... 
p4 resolve -ay 
p4 submit 
p4 merge //depot/A/... //depot/B/... 
p4 resolve -am 
p4 resolve 
p4 submit 

你可能做到這一切在一個更新列表中也是如此,但是它稍微複雜一點 - 上面的代碼保持簡單並留下一個容易遵循的歷史記錄(即,每個修訂明確「從此更改中複製」,「忽略此更改」或「合併這些改變」,而不是單一的修訂,這些修改將所有這些操作混爲一談一起)。

0

你不能簡單地從B中取出2,因爲它作爲一個變化從A一起取出(1 & 2)。

我認爲實現這一目標的唯一方法是:

  1. 回滾3 B(p4 edit //depot/B/file; p4 sync //depot/B/file#0; p4 submit //depot/B/filep4 delete //depot/B/file; p4 submit //depot/B/file
  2. 整合1從A到B
  3. 從A整合4到B

話雖如此,這有兩個缺點:

  1. 如果您以後想要將A從A重新整合到B,P4將會因爲知道已經有具有從A到B的整合2
  2. 如果要從B整合回B A,這會將B上的2反轉傳播給A,這可能不是你想要的。

所以,即使它更復雜,恢復整合的唯一正確途徑正是你不想做什麼:

  1. 捲上的一個
  2. 背2一個集成到乙
  3. 在補辦2一
0

根據您嘗試同步到//庫/ B /文件@ 1,我假設該文件並沒有先前存在//倉庫/ B/...?

如果我的假設是正確的,你要刪除的文件:

p4 delete //depot/B/file 

並提交。

如果我的假設是不正確的,你的新分支文件是@ 2或更高,則:

p4 edit //depot/B/[email protected] 
p4 resolve -ay //depot/B/file 
p4 submit