Perforce ( P4 ) 将树中的特定版本移动到树的顶部
Posted
技术标签:
【中文标题】Perforce ( P4 ) 将树中的特定版本移动到树的顶部【英文标题】:Perforce ( P4 ) Moving a particular version in tree to top of the tree 【发布时间】:2019-10-19 06:02:00 【问题描述】:假设我在 P4 中有一个文件 foo.c 的版本,树的顶部版本是 foo.c#8。
出于某种原因,我想将 foo.c#4 移动为 foo.c#9(本质上是将版本 4 移动到树的顶部)。
一种方法是手动完成(同步版本 4,复制,然后同步到树的顶部,编辑和复制 4 并重新提交)。
有没有更优雅的方式将 foo.c#4 推到树顶?
【问题讨论】:
【参考方案1】:听起来您想撤消修订 #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
转换为sync
和resolve -ay
一个中间版本,然后是sync
和resolve -am
更高版本,如果您愿意的话构建一个“撤消”某些更改同时保留后续更改的修订。
这是一种使用p4 print
的方法(简单案例的命令较少,但 IMO 不太优雅,因为它不能扩展到更复杂的用例):
p4 edit foo.c
p4 print -o foo.c foo.c#4
p4 submit
【讨论】:
感谢您的回复。不幸的是,我使用的 P4version 似乎不支持“p4 undo”。在线阅读手册页,看起来您的解决方案有效,但我无法利用它 您使用的服务器版本有多早? (p4 info
,“服务器版本”行。)
添加了一些其他食谱。如果您使用的是支持它的服务器版本,p4 undo
是迄今为止最好的选择,因为它会在元数据中留下永久记录,将其与普通的 edit
操作区分开来。以上是关于Perforce ( P4 ) 将树中的特定版本移动到树的顶部的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Perforce 树中查找未跟踪的文件? (模拟svn状态)
使用 p4 软件仓库的 perforce 软件仓库未显示在客户端上