Perforce(P4)将树中的特定版本移动到树的顶部

时间:2019-06-03 16:44:59

标签: version-control perforce

假设我在P4中有一个文件foo.c,树的顶部是foo.c#8。

出于某种原因,我想将foo.c#4移为foo.c#9(实际上是将版本4移到树的顶部)。

一种方法是手动执行此操作(同步版本4,进行复制,然后同步到树顶,编辑并复制4,然后重新提交)。

有没有更优雅的方式将foo.c#4推到树顶?

1 个答案:

答案 0 :(得分:4)

您想要撤消#5至#head修订的声音:

p4 undo foo.c#5,#head
p4 submit

或者,如果您愿意,则要撤消所有高于#4的修订:

p4 undo "foo.c#>4"
p4 submit

或者,即使您有更高的修订版,如果您只想撤消#5至#8,也可以:

p4 undo foo.c#5,#8
p4 submit

如果有更高版本,则最后一个变体将需要sync / resolve解决冲突的步骤(因此您可以在更高版本中合并,而忽略#5至#8)。

如果您使用的服务器版本已有几年历史,则可以尝试p4 copy

p4 copy foo.c#4 foo.c
p4 submit

如果您使用的服务器版本早于此版本,这是通过常规的旧p4 sync执行此操作的最优雅的方法:

p4 sync foo.c#4
p4 edit foo.c
p4 sync foo.c#head
p4 resolve -ay
p4 submit

请注意,类似于undo的示例,您可以选择将sync foo.c#head转换为syncresolve -ay的中间版本,然后选择syncresolve -am以后的版本,如果您想构建一个在保留更高版本的同时“撤消”某些更改的修订。

这是使用p4 print进行操作的一种方法(简单情况下的命令较少,但IMO不太优雅,因为它无法扩展到更复杂的用例):

p4 edit foo.c
p4 print -o foo.c foo.c#4
p4 submit