Perforce P4:我在重命名文件时出错,丢失了它的历史记录。我怎样才能修好它?

Perforce P4:我在重命名文件时出错,丢失了它的历史记录。我怎样才能修好它?,perforce,rollback,integrate,backout,Perforce,Rollback,Integrate,Backout,我被要求将一个文件的扩展名更改为另一个,如: file.a-->file.b 我做错的事情是这样的: cp file.a file.b p4 add file.b p4 delete file.a 然后提交给我的分支机构。 问题是,我的团队希望将.a文件的历史记录保存在.b文件中。直到现在我才知道p4的事,所以我搞砸了 如果我回滚我的更改并执行p4 move file.a file.b,那么当我集成到主分支时,它的历史记录上仍然会有“删除问题”,对吗 有没有办法从主分支恢复第一个文

我被要求将一个文件的扩展名更改为另一个,如:

file.a-->file.b

我做错的事情是这样的:

  cp file.a file.b
  p4 add file.b
  p4 delete file.a
然后提交给我的分支机构。 问题是,我的团队希望将.a文件的历史记录保存在.b文件中。直到现在我才知道p4的事,所以我搞砸了

如果我回滚我的更改并执行p4 move file.a file.b,那么当我集成到主分支时,它的历史记录上仍然会有“删除问题”,对吗

有没有办法从主分支恢复第一个文件.a并用它替换文件.b?(然后执行p4移动)

谢谢大家


PS:我是新使用p4的,举个例子,我假设该文件.a#4是删除前的最后一次修订版。我还假设您使用的是相当新的p4d版本

首先,撤消以前的更改

p4 sync file.a#4
p4 add file.a
p4 delete file.b
p4 submit -d "undo previous change"
请注意,当您首先通过同步到旧版本来重新添加文件时,历史记录会保留一个集成指针,显示新的“添加”版本已连接到旧版本(如果您运行“p4 filelog file.a”,可以看到这一点)。当您集成回主分支时,这将使事情变得更加顺利,因为否则它看起来像文件。a是一个全新的文件

现在,文件.a已返回(并且仍然通过集成历史记录连接到主分支),文件.b已删除,您可以将文件.a“移动”到文件.b,而不存在任何障碍:

p4 edit file.a
p4 move file.a file.b
p4 submit -d "moving .a to .b"

现在,当您集成回主分支并运行“p4 resolve”时,相同的“移动”将发生在主线上,如果文件发生任何其他更改,则主线上的.a将与您的文件合并。b重命名(而不是您以前可能遇到的文件)。a删除与其他更改冲突,而您的“new”file.b只是想作为一个独立的文件进行分支。)

对于多年后阅读此答案的任何人,现在可以使用
p4 undo
命令完成第一部分,例如
p4 undo@=1234
其中change
1234
是最初删除/添加该文件的部分。