如何从Perforce工作树中删除未跟踪的文件?

Sim*_*ult 28 perforce

什么相当于Perforce 的"git clean"

git-clean - 从工作树中删除未跟踪的文件

通过从当前目录开始递归删除不受版本控制的文件来清除工作树.

-x不要使用从.gitignore(每个目录)和$ GIT_DIR/info/exclude读取的标准忽略规则,但仍然使用-e选项给出的忽略规则.这允许删除所有未跟踪的文件,包括构建产品.这可以(可能与git reset一起使用)创建一个pristine工作目录来测试一个干净的构建.

-X仅删除Git忽略的文件.这可能有助于从头开始重建所有内容,但保留手动创建的文件.

sco*_*777 14

使用P4V,您可以右键单击文件夹并选择"Reconcile Offline Work ...".在中间面板("不在软件仓库中的本地文件")中,将列出Perforce可以在文件夹树中找到的所有不在软件仓库中的文件.您可以选择部分或全部,然后右键单击并选择"删除本地文件"

这不是一个脚本,但它比Windows上的大多数其他解决方案容易得多.


Emi*_*Sit 11

从顶级尝试(对于Unix):

# Find all files and filter for those that are unknown by Perforce
find . -type f | p4 -x - fstat 2>&1 > /dev/null | sed 's/ -.*$//' > /tmp/list
### manually check /tmp/list for files you didn't mean to delete
# Go ahead and remove the unwanted files.
xargs rm < /tmp/list
Run Code Online (Sandbox Code Playgroud)

或者,对于一种干净的-f方法,只需直接管道到xargs rm,而不是先在/ tmp/list中暂存文件列表.

  • 这更像是git clean -xf; 有没有办法兑现.p4ignore? (2认同)

New*_*ian 11

新的P4清洁应该可以解决问题

  • 有一些微妙之处需要注意,请参阅下面我的答案http://stackoverflow.com/a/38455024/284795 (2认同)

Col*_*nic 7

p4 clean"恢复工作区文件以匹配相应的软件仓库文件的状态"和git clean"从工作树中删除未跟踪的文件" 之间的行为存在细微差别,因此请仔细阅读手册.

特别是,vanilla p4 clean将还原您对任何待定更改列表之外的文件所做的更改.因此,使用"干运行"选项测试结果是明智的p4 clean -n.

我认为:

  • p4 clean -a模拟git clean "从工作树中删除未跟踪的文件".
  • p4 clean -a -I模拟git clean -x"删除所有未跟踪的文件,包括构建产品".

令我沮丧的是,没有确切的类似git clean -X"删除Git忽略的文件",但您可以使用以下方法进行近似p4 reconcile:

  • p4 reconcile -a && p4 clean -a -I.将删除与忽略列表匹配的未跟踪文件,其他文件将移至默认更改列表.