P4:我在重命名文件时犯了一个错误,丢失了它的历史记录。我该如何解决?

P4: I made a mistake renaming files and loose its history. How can I fix it?

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

file.a --> file.b

我做的(错误的)是这样的:

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

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

如果我回滚我的更改并执行 p4 移动 file.a file.b,当我集成到主分支时,它的历史上仍然会有 'deletion issue' 对吗?

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

非常感谢大家。

PS: 我是 p4 新手

我假设 file.a#4 是删除前的最后一个版本。我还假设您使用的是最新版本的 p4d...

首先,撤消之前的更改。

p4 sync file.a#4
p4 add file.a
p4 delete file.b
p4 submit -d "undo previous change"

请注意,当您通过先同步到旧版本来重新添加文件时,历史记录会保留一个集成指针,显示新 "add" 版本已连接到旧版本(如果你 运行 "p4 filelog file.a")。当您集成回主分支时,这将使事情变得更顺利,否则它看起来像 file.a 是一个全新的文件。

现在 file.a 回来了(并且仍然通过集成历史连接到主分支),并且 file.b 被删除,您可以 "move" file.a file.b没有障碍:

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

现在当你整合回主分支和运行 "p4 resolve"时,主线上也会发生同样的"move",如果[=28发生任何其他变化=] 在主线上,它们将与您的 file.b 重命名合并(而不是您之前可能 运行ning 的内容, file.a 删除与其他更改冲突,而您的 "new" file.b 只是想作为一个独立的文件进行分支。