我在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
我想在changelist 2
上退出//depot/B
。
我试过以下:
p4 sync //depot/B/file@1
p4 edit //depot/B/file
p4 sync //depot/B/file@2
....
但第一行发生错误。
//depot/B/file@1 - no file(s) at that changelist number.
有没有办法在不提交//depot/A
分支的情况下实现这一目标?
答案 0 :(得分:3)
这就是我要做的事情:
p4 copy //depot/A/...@1 //depot/B/...
p4 submit
p4 merge //depot/A/...@2 //depot/B/...
p4 resolve -ay
p4 submit
p4 merge //depot/A/... //depot/B/...
p4 resolve -am
p4 resolve
p4 submit
你也可以在一个变更列表中完成所有这一切,但它会变得有点棘手 - 上面保持简单并留下一个易于遵循的历史记录(即每个修订版清楚地#34;复制从这一变化中,""忽略了这一变化",或者#34;合并了这些变化"而不是将这些变化全部合并在一起的单一修订版。)
答案 1 :(得分:0)
你不能简单地从B中取出2,因为它从A汇集为一个变化(1& 2)。
我认为实现这一目标的唯一方法是:
p4 edit //depot/B/file; p4 sync //depot/B/file#0; p4 submit //depot/B/file
或p4 delete //depot/B/file; p4 submit //depot/B/file
)话虽如此,这有两个缺点:
所以,即使它更复杂,恢复集成的唯一正确方法正是你不想做的事情:
答案 2 :(得分:0)
根据您尝试同步到/ depot / B / file @ 1,我假设该文件先前不存在于/ depot / B / ...中?
如果我的假设是正确的,您将要删除该文件:
p4 delete //depot/B/file
并提交。
如果我的假设不正确且您新分支的文件是@ 2或更高,那么:
p4 edit //depot/B/file@1
p4 resolve -ay //depot/B/file
p4 submit