如何在perforce上快速安全地同步?

sor*_*rin 11 perforce sync

如果你sync在perforce中做了一件事,很多时候,即使它应该做也不会做任何事情.如果你进行强制同步(sync -f)它肯定会盲目地同步服务器上的所有文件,如果你有一个大项目,这是不可接受的.

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

Gre*_*eld 18

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

您必须让Perforce为您管理您的硬盘 - 服务器知道您拥有哪些文件版本,因此正常同步只能获得所需的内容.如果失败,则几乎无一例外地表明用户正在修改,删除,添加,重命名Perforce之外的文件(例如在资源管理器中).

有时你可能会得到一个有趣的系统(即PC故障)导致这种情况,所以它不一定是用户的错误.但这些是非常罕见的 - 因此我的"习惯性"资格赛上面.

如果您认真思考,并没有做任何与众不同的事情,那么就开始考虑其他进程可能会调整这些文件.例如,您是否构建系统做了一些奇怪的事情,并尝试在构建时修改文件?你有一个开放的网络共享,或许其他人无意中戳了吗?你有一个干扰的备份系统吗?

希望有所帮助.

  • Perforce将您拥有的文件版本与您的每个客户端规范相关联.这个信息保存在服务器上,每个客户端规范 - 它称之为"有列表".共享客户端不是典型的用户实践.Perforce允许它们启用特定的使用方案.但是,如果您正在使用不同的计算机,则可以通过为每台计算机配置客户端规范来处理.这正是他们的设计目标. (2认同)

小智 6

正如其他答案所述,您需要为从软件仓库同步的目录树的每个"实例"创建一个单独的客户端(工作区).

如果要强制同步仅从库中更改的那些文件:

p4 diff -se ... | p4 -x - sync -f
p4 diff -sd ... | p4 -x - sync -f
Run Code Online (Sandbox Code Playgroud)

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

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

p4 diff -se ... | p4 -x - edit
Run Code Online (Sandbox Code Playgroud)

将打开以编辑与仓库不同的任何文件.

还有这个:

p4 diff -sd ... | p4 -x - delete
Run Code Online (Sandbox Code Playgroud)

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