我想要一个不需要强制同步的快速解决方案,它会将指定目录置于其原始存储库状态。
我想要的是确保在运行命令后我将不会有这些。
p4 -f sync
不是一个选项,我需要一个更快的解决方案,以尽量减少网络使用。
万一有人要求,perforce proxy不在讨论范围内。
我知道部分解决方案是:
p4 diff -sd -se //clientspec/dir/... | p4 -x - revert
问题是,这不会删除添加到上面不在perforce中的路径的文件 - 我想要从磁盘中删除的文件。
此外,我需要一个多平台或跨平台解决方案 - 它必须适用于Windows,OS X和Linux。
答案 0 :(得分:7)
Perforce在2014.1中添加了一个新命令“p4 clean”,通过将工作区重置为#have状态,可以完全满足您的要求:
该命令是“p4 reconcile -w”的别名,并使用文件的hashsum来确定它们在工作区中的状态。
答案 1 :(得分:2)
另一个Unix / Linux代码段应该删除所有从未被perforce跟踪过的文件:
find . -type f | p4 -x- files 2>&1 | sed -n -e 's/ - no such file(s).//p' | xargs -d '\n' rm
答案 2 :(得分:0)
如果你有Unix / Linux,这可能会有效。
在Perforce中,您可以通过p4v“调整脱机工作”,如here所示,或通过命令行看到here.您已经按照问题中的说明执行了后者,当您还原编辑时和删除的文件。添加的文件比较棘手。第二个链接可以让您执行以下操作。
find . -type f -print | p4 -x - add
find . -type l -print | p4 -x - add
在Unix中添加文件和符号链接
棘手的部分是物理删除您添加的文件。这不是很好,但我认为它会起作用。 p4开了| grep add | cut -f1 -d“#”| p4 -x-其中| cut -f3 -d“”
然后你需要做一个
p4 revert directory/...
或删除文件时执行与上述类似的操作。
答案 3 :(得分:0)
我需要这个用于svn的构建服务器。我最后做的是:
通过这种方式,我知道没有任何东西可以用于旧版本。