2015-11-02 88 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