Perforce覆盖了我忘记结账的代码。我该如何恢复?

时间:2011-07-22 06:56:48

标签: perforce

在修改源代码文件之前,我忘了检查它。 当我获得最后一次修订时,Perforce覆盖了该文件,因此我的工作完全丢失了。 是否可以恢复文件?

5 个答案:

答案 0 :(得分:6)

为了将来使用,请更新您的客户端工作区,以便指定“noallwrite,noclobber”。如果设置了noclobber,Perforce将不会覆盖您可写的未打开文件:http://www.perforce.com/perforce/doc.current/manuals/cmdref/client.html

答案 1 :(得分:3)

只有当您的编辑器或操作系统保存了副本或者修改了足够长的时间以使其进入备份时。 Perforce不会制作此类文件的副本,它会盲目地假设您没有说谎,并且在您想要编辑文件时始终诚实地告诉它。

答案 2 :(得分:3)

如果您正在使用eclipse,则可以使用Compare With检索本地版本 - >当地历史。它帮助了我。

答案 3 :(得分:1)

最近发生在我身上。出于某种原因,在我“p4同步”-ed我的工作区之后,并且执行p4解决后,我注意到我对文件的更改丢失了。我不确定我的更改是否未保存或我没有检出文件。但我真的记得我的改变得救了。 :(

我一直在使用 Visual Studio 进行开发,它没有Eclipse中的本地历史记录。幸运的是,该文件是 javascript文件,我一直在 Internet Explorer 中测试我的应用程序。由于IE对某些互联网数据(如js文件)进行了一些缓存,我所做的是检查临时保存文件的目录(Internet选项 - >浏览器历史记录设置)那里你会看到不同的版本保存的文件我确实恢复了我的文件!真的只是运气!

在那次事件之后,我为每次保存文件时都安装了一个插件,用于存储文件的本地历史记录http://visualstudiogallery.msdn.microsoft.com/226c2108-9da9-407d-b90d-9783040d27b8

避免这些情况的最佳方法是:

  1. 在开发期间首先将您的文件分支到单独的devline 并提交您完成的每个里程碑 增量。通过这种方式,您将始终拥有重要的版本 你在开发过程中做的改变。在此之后你可以
  2. 将其整合回母分支/主线
  3. http://answers.perforce.com/articles/KB_Article/Branching-Codelines-and-Merging-Changes

    希望这有帮助!

答案 4 :(得分:0)

如果您触发了以下命令(这是FORCE同步选项),那么Perforce将只更新所有文件..包括WRITABLE文件。唯一的例外是您在perforce中打开的任何文件都不会被覆盖。因此,如果您的文件使用OS命令设置为WRITABLE,而不是使用p4打开..它们将被p4 sync -f覆盖。

p4 sync -f  

另一种可能性是你进行了p4同步,并且仍然强制覆盖你的可写文件(没有用p4打开),因为你的工作区设置没有noallwrite,noclobber指定。通常默认情况下,已经指定了这些设置,因此Perforce不会破坏可写文件。