如何将 perforce 客户端同步到简化的 p4 客户端规格?

How to sync perforce client to reduced p4 client specs?

我已经同步了一个大型 perforce 客户端。我意识到我只会处理同步到的较大根文件夹的子目录。

旧的 p4 客户端规范

//Depot/largeFolder/... //Clinet/largeFolder/...

新的 p4 客户端

//Depot/largeFolder/samllSubDir/... //Clinet/largeFolder/smallSubDir/...

现在,当我执行 p4 sync 时,perforce 不会删除我的客户端中不需要的其他文件夹。 由于我在 /largeFolder/smallSubDir/ 中编辑了文件,所以我对是否执行 p4 sync -f 犹豫不决。我不想让他们重置。

同步我的客户端以便删除不在新映射中的其他文件夹的正确方法是什么?

注意:我的真实映射比较复杂,手动删除文件夹不太现实。

在典型情况下,重新同步缩小的客户端确实会删除未映射的文件。你没有说当你尝试进行同步时会发生什么(有错误消息吗?),所以我不能确定发生了什么,但这些是首先想到的两种可能性:

  • 打开的文件永远不会被 sync 触及。您需要 revert 它们——如果您想还原文件但保留本地副本,请使用 -k 标志,然后在 sync 上也使用 -k 标志这样它将继续不接触它们(同时将它们标记为已同步,或者在这种情况下未同步)。
  • 可写文件 默认情况下 会被 sync 单独留下,并产生“无法破坏”警告。如果您想保留本地文件,在这里执行 sync -k 就足够了。执行 sync -f 会清除本地文件,即使它们已被修改(但前提是它们还没有打开进行编辑——见上文)。

运行 有用的命令,如果你正在尝试调试(选择任何你认为应该 [un] 没有同步的文件):

  • p4 sync <file> -- 您是否收到一条错误消息,告诉您为什么文件没有被删除?
  • p4 where <file> -- 那个文件的客户端映射是不是你想的那样?
  • p4 opened <file> -- 文件是否打开?
  • p4 have <file> -- 您是否首先同步了此文件?
  • p4 files <file> -- 这个文件是否存在于软件仓库中?

请注意,打开的文件不会被 p4 sync 触及,这意味着您编辑的文件不会受到 sync -f 的影响,前提是您确实打开了它们编辑。如果你没有, 运行 a p4 reconcile 然后 p4 sync -f 是完全安全的——但是如果你没有首先找到根本原因(即不需要的文件 打开编辑?),它可能也没有帮助。