20

我正在尝试打开现有的 Perforce 应用程序。我做了一些本地更改,例如删除文件,我想撤消这些更改(也就是说,我希望我的本地副本再次与存储库完全匹配——删除添加的文件、恢复已删除的文件和撤消更改)。

当我尝试使用 p4v gui 客户端恢复时,我看到了这个错误:

 file(s) not opened on this client

我究竟做错了什么?

我确实设法恢复了所有更改的文件,但没有恢复添加/删除的文件。

编辑:我做了以下事情:

  • 使用 p4v 连接到 Perforce 服务器
  • 将目录映射到我的本地文件系统(比如说C:\Perforce
  • 获取最新版本的存储库
  • 在 Windows 资源管理器中转到 C:\Perforce
  • 删除一些文件和文件夹
  • 添加一些文件和文件夹

我想回到“原始”状态,即当我第一次获得最新版本的存储库时服务器上的确切副本。

4

3 回答 3

24

通过编辑描述的外观,您直接在文件系统上添加和删除文件,而不是通过 perforce。因此 Perforce 对这些更改一无所知,因此没有什么可以恢复的。通常,当您要添加文件时,您使用“p4 add”(或等效的 p4v 操作),而当您删除时,应使用“p4 delete”(或再次使用等效的 p4v 操作)。

实际上,回到原始状态的最佳选择是在 c:\perforce(在 Windows 资源管理器中)中对代码的本地副本进行核对,转到 p4v,右键单击要同步的区域,然后选择“获取修订版” ...”并在随后的对话框中,确保选中“强制操作”复选框。这将告诉 Perforce,无论您是否已同步,您都需要所有内容的新副本。

您还可以在 p4v 中运行“协调离线工作”。右键单击仓库区域并选择该选项。它将扫描本地文件夹结构,并为您提供有关已添加哪些文件但在 perforce 中不存在的报告、删除了哪些文件以及修改了哪些文件。在该对话框中,您可以右键单击 perforce 中不存在的本地文件并将其删除,或者您可以“p4 添加”它们。您还可以同步已删除的文件。

HTH。

于 2011-09-19T21:36:09.087 回答
3

只是一个额外的不指出另一个原因。如果文件名包含无法正确翻译的异常字符,则客户端上的名称将永远不会与服务器上的名称匹配。在这种情况下,解决方案是找出文件名中的那个字符(在 Linux 上它将是一个问号标志)并使用通配符来帮助服务器识别文件,以便它可以删除它等等(p4 删除文件是要走的路)。

于 2015-11-20T10:19:53.147 回答
1

这个答案可能不是你的情况。当我在未登录 p4 的情况下编辑本地磁盘上的文件时,这发生在我身上。

命令行的快速修复是:

p4 login               # make sure you've logged in
p4 edit <filename>     # let p4 know you've edited the file
p4 revert <filename>   # revert to "pristine" state
于 2018-06-25T02:21:58.230 回答