Perforce无法正确同步文件

kin*_*005 29 perforce revision

我正在使用Perforce P4V(图形工具)在工作时与我的Perforce服务器进行交互.我有一个项目,我添加到仓库,我不小心从我的本地计算机上的工作区删除它,问题是当我使用Get Revision Action(GUI等效的同步),文件没有得到更新,即我可以查看我想要的服务器上的文件,但它们无法与我的本地PC正确同步.令我感到沮丧的是,文件没有从服务器中取出.我假设应该发生的事情是,如果文件在我的本地PC上被改变,我应该能够从服务器获取修订版,然后将数据拉到我的本地PC并在我的PC上本地覆盖更改,但那并没有发生.有什么我想念的吗?

Mar*_*ark 59

Perforce会跟踪它认为您在本地工作站上拥有的文件.如果你在本地删除这些文件(并且不要"告诉"perforce),那么Perforce仍会认为你拥有这些文件.如果你想让它们恢复,你需要"强制同步"文件.在p4v中,您可以使用"获取修订版本..."项,在随后的对话框中,您可以选中"强制操作"复选框,告诉Perforce再次为您提供所有文件,无论Perforce是否认为您需要它们.

只是为了完成信息,如果你想在本地删除文件,你可以通过选择"从工作区删除"项目通过p4v这样做.这样做会在本地删除文件,并告诉perforce您不再拥有这些文件,以便下次同步时,将从服务器检索这些文件.


Chr*_*isF 11

它们不会更新,因为根据Perforce,您仍然拥有本地计算机上的文件.

您需要使用"Get Revison ..."选项并启用"强制操作"选项.

这将告诉Perforce刷新所有文件,即使它认为你有最新版本的文件.


Zah*_*hra 10

就像其他人提到的那样,一个解决方案是对整个软件仓库进行"强制同步",这基本上覆盖了从服务器到本地的所有内容.这样做的缺点是,如果你在大型仓库工作,可能需要很长时间才能完成.

另一种方法是将本地工作区与服务器进行比较,然后仅强制同步工作区中缺少的文件.

p4 diff -sd //Depot/path/… | p4 -x – sync -f
Run Code Online (Sandbox Code Playgroud)

-sd选项:仅显示客户端工作空间中缺少但未显示在库中的未打开文件的名称.

如果-sd不是您需要的,还有更多选项(sa/se/etc.)可用.看到这里.

该命令的信用额转到博客.


小智 8

即使启用了"强制操作","获取修订"也只会更新未打开(签出)的文件.您应该还原在该工作区中标记为已签出的所有文件,然后使用"获取修订"和"强制操作"


kin*_*005 2

open for edit and cannot be deleted我按照你的建议做了,但在尝试时我不断收到文件仍然存在的消息Remove from Workspace

另外,Get Revision返回一条消息说no files were updated

我最终要做的是Revert文件,然后执行Get Revision操作,解决了问题。

  • 请不要使用答案来发表评论。您有代表,请发表评论。看看[此讨论](http://meta.stackexchange.com/q/74194/4228)。 (10认同)
  • @raven - 不要忘记OP总是可以评论他们自己问题的答案。 (2认同)