11

如果您执行 a syncin perforce,它可能会经常发生,即使它应该什么也不做。如果您进行强制同步(sync -f),它肯定会盲目同步服务器中的所有文件,如果您有一个大项目,这是不可接受的。

问题是如何进行快速同步?

4

4 回答 4

18

您问题的关键部分是“即使应该”。毫无疑问,在我(太)多年使用 Perforce 的经验中,习惯性地恢复到强制同步的用户,因为正常同步没有达到他们的预期,并没有正确使用 Perforce。

你必须让 Perforce 为你管理你的硬盘——服务器知道你有哪些文件的版本,所以正常的同步只是得到它需要的。如果它失败了,那么这几乎毫无例外地表明用户正在 Perforce 之外(例如在资源管理器中)修改、删除、添加、重命名文件。

有时您可能会得到一个有趣的系统(即 PC 故障,)导致这种情况,因此不一定是用户的错。但这些非常罕见 - 因此我在上面的“习惯性”限定词。

如果您认真地认为您没有做任何不寻常的事情,那么请开始查看哪些其他进程可能正在调整这些文件。例如,您是否构建系统做了一些奇怪的事情,并尝试在构建时修改文件?您是否有一个开放的网络共享,可能是其他人无意中戳到的?您是否有干扰的备份系统?

希望有帮助。

于 2009-07-29T10:02:07.063 回答
6

正如其他答案所提到的,您需要为从仓库同步的目录树的每个“实例”创建一个单独的客户端(工作区)。

如果您只想强制同步那些从软件仓库更改的文件:

p4 diff -se ... | p4 -x - sync -f
p4 diff -sd ... | p4 -x - sync -f

警告:这将覆盖任何本地更改的文件(在当前目录和子目录中)。

相反,如果您编辑了一些文件并忘记先打开它们进行编辑,您可以这样做:

p4 diff -se ... | p4 -x - edit

它将打开以编辑与 depot 不同的任何文件。

还有这个:

p4 diff -sd ... | p4 -x - delete

将打开以删除任何在本地删除的文件。

于 2009-10-16T21:58:08.663 回答
4

如果您创建了不一致,perforce 会丢失您工作区中正在发生的事情的跟踪,您应该使用“协调离线工作...”功能(在 P4V 中)。

这将运行一个文件夹差异并告诉您解决不一致的选项。

通常,请确保您始终通过 perforce 明确签出文件(打开以进行编辑)。如果您习惯了其他系统,这会感觉很奇怪。

于 2009-07-29T10:13:09.713 回答
0

我相信您要查找的命令是 p4 clean。

来自:http ://www.perforce.com/perforce/r14.2/manuals/cmdref/p4_clean.html

“工作区中存在但从库中丢失的文件将从工作区中删除。库中存在但从您的工作区中丢失的文件。已从库同步的文件版本将添加到您的工作区。文件已修改在您的工作区中尚未签入的将恢复到从仓库同步的最后一个版本。”

于 2015-01-23T00:33:38.127 回答