我想要一个快速的解决方案,不需要强制同步,将指定的目录置于其原始存储库状态.
我想要的是确保在运行命令后我将不会有这些.
p4 -f sync 不是一个选项,我需要一个更快的解决方案,尽量减少网络使用.
万一有人要求,perforce代理不在讨论之中.
我知道部分解决方案是:
p4 diff -sd -se //clientspec/dir/... | p4 -x - revert
问题是,这不会删除添加到上面不在perforce中的路径的文件 - 我想要从磁盘中删除的文件.
此外,我需要一个多平台或跨平台的解决方案 - 它必须在Windows,OS X和Linux上运行.
小智 7
Perforce在2014.1中添加了一个新命令"p4 clean",通过将工作区重置为#have状态,它可以完全满足您的要求:
该命令是"p4 reconcile -w"的别名,并使用文件的hashsum来确定它们在工作区中的状态.
如果您有 Unix/Linux,这可能可行。
在 Perforce 中,您可以通过 p4v(如此处所示)或通过命令行(如此处所示)“协调离线工作 ” 。 当您恢复编辑和删除的文件时,您已经按照问题中所述执行了后者。添加的文件比较棘手。第二个链接会让您执行以下操作。
find . -type f -print | p4 -x - add
find . -type l -print | p4 -x - add
Run Code Online (Sandbox Code Playgroud)
在 Unix 中添加文件和符号链接
棘手的部分是物理删除您添加的文件。这不太漂亮,但我认为它会起作用。p4打开| grep 添加 | 切-f1-d“#”| p4 -x- 其中 | 切-f3-d“”
然后你需要做一个
p4 revert directory/...
Run Code Online (Sandbox Code Playgroud)
或者在删除文件时执行与上面类似的操作。