Perforce无法正确同步文件

时间:2011-01-26 17:47:51

标签: perforce revision

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

7 个答案:

答案 0 :(得分:56)

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

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

答案 1 :(得分:10)

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

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

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

答案 2 :(得分:9)

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

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

p4 diff -sd //Depot/path/… | p4 -x – sync -f

-sd选项:仅显示客户端工作区中缺少但未显示在软件仓库中的未打开文件的名称。

如果-sd不是您需要的,还有更多选项(sa / se / etc。)可用。见here

该命令的信用额转到this博客。

答案 3 :(得分:8)

“获取修订版”将仅更新未打开(签出)的文件,即使启用了“强制操作”也是如此。您应该还原在该工作区中标记为已签出的所有文件,然后使用“获取修订”和“强制操作”

答案 4 :(得分:2)

谢谢大家,我按照你的建议做了,但在尝试“从工作区删除”时,我不断收到文件仍然“打开以进行编辑且无法删除”的消息。此外,返回“获取修订”,并显示“没有文件更新”的消息。我最不得不做的是“恢复”文件,然后执行“获取修订”操作,解决了问题。谢谢你的帮助。

答案 5 :(得分:0)

对于遇到此问题的人们,这在mac命令行上对我有用...

cd进入本地perforce工作区-正在处理的检出文件的基本目录。

[a,b] = [b,a]; 

b = [a, a = b][0]; // shorthand version

-f强制同步。

当从Time Machine备份还原Mac时,这也可以派上用场。

https://www.perforce.com/perforce/r12.1/manuals/cmdref/sync.html

答案 6 :(得分:-2)

检查文件,稍微更改一下,然后还原。 Perforce将使用最新版本替换本地文件。

相关问题