P4:我错误地重命名文件并放弃了它的历史。我该如何解决?

时间:2015-08-13 21:10:21

标签: perforce rollback integrate backout

我被要求将文件的扩展名更改为:

file.a - > file.b

我所做的(错误的)就像是:

  cp file.a file.b
  p4 add file.b
  p4 delete file.a

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

如果我回滚我的更改并执行p4移动file.a file.b,那么当我整合到主分支时,它的历史记录仍会是“删除问题”吗?

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

非常感谢你们。

PS:我是新用的p4

1 个答案:

答案 0 :(得分:2)

我假设例如file.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“)。当你集成回主分支时,这将使事情变得更顺畅,否则它看起来像file.a是一个全新的文件。

现在file.a又回来了(并且仍然通过集成历史记录连接到主分支),并且删除了file.b,你可以将file.a“移动”到file.b而没有任何障碍:

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

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