我有时使用的功能"对账脱机工作......"在Perforce中的P4V IDE中发现同步起来,我已经从P4车厂工作,同时断开任何文件.它启动另一个窗口,执行'Folder Diff'.
我有文件,我从来不想检查源代码控制(如在bin文件夹中找到的DLL,代码生成输出等)有没有办法过滤这些文件/文件夹出现可能是"新"添加.它们往往会混淆我真正感兴趣的文件列表.P4是否具有Subversion的"忽略文件"功能?
从2012.1版开始,Perforce支持P4IGNORE
环境变量.我更新了这个关于忽略目录的问题的答案,并解释了它的工作原理.然后我注意到了这个答案,我猜这个答案现在多余了.
假设您有一个名为"CLIENT"的客户端,一个名为"foo"的目录(位于您的项目根目录下),并且您希望忽略该目录树中的所有.dll文件,您可以将以下行添加到工作区视图中以完成这个:
-//depot/foo/*.dll //CLIENT/foo/*.dll -//depot/foo/.../*.dll //CLIENT/foo/.../*.dll
第一行将它们从目录"foo"中删除,第二行将它们从所有子目录中删除.现在,当您"协调脱机工作..."时,所有.dll文件将被移动到文件夹差异显示底部的"Excluded Files"文件夹中.它们会让您失望,但如果您真的需要,仍然可以查看和操作它们.
你也可以用另一种方式来做,这会将你的"Excluded Files"文件夹减少到一个,但是你将无法操纵它包含的任何文件,因为路径会被破坏(但如果你只是想要它们你的方式,没关系).
-//depot/foo.../*.dll //CLIENT/foo.../*.dll
对,但是.
Perforce版本2012.1增加了一个名为p4ignore的功能,灵感来自Git.然而,Perforce开发人员在没有正当理由的情况下对行为进行了更改,这恰好使该功能变得不那么有用.
虽然Git从所有.gitignore
文件中获取规则,但在环境变量中指定文件名之前,Perforce不知道在哪里查看P4IGNORE
.这种自由是一种诅咒.您不能破解为其忽略文件使用不同名称的两个存储库.
此外,Perforce的忽略功能无法解决问题.您可以轻松地为自己设置它,但除非明确选择加入,否则其他人不会受益.没有意外提交不受欢迎文件的贡献者(例如,bin
由构建脚本创建的文件夹).
Git的忽略功能很棒,因为它可以解决问题.如果.gitignore
文件被添加到存储库(每个人都这样做),他们将为每个人设计框.没有人会不小心发布他们的私钥.
有趣的是,Perforce文档将 ".p4ignore"显示为示例忽略规则,这是向后的!如果规则有用,则应将它们作为存储库的一部分进行共享.
Perforce仍然可以在该功能上取得成功.例如,选择文件名的约定p4ignore.txt
,以便该功能可用于此框.删除P4IGNORE
环境变量,这会适得其反.编辑文档,鼓励开发人员共享有用的规则.让用户在其主文件夹中的文件中编写个人规则,就像Git那样.
如果您认识Perforce的任何人,请发送电子邮件给他们.
这适用于Perforce 2013.1,新的P4IGNORE机制最初是在2012年版本中添加的,在Perforce博客中描述:
https://www.perforce.com/blog/new-20121-p4ignore
如当前所述,您将环境变量"P4IGNORE"设置为包含要忽略的文件列表的文件名.
所以你可以看一下,看看你喜欢它.
如果您想要一个适用于所有工作空间而无需复制的解决方案,您(或您的系统管理员)可以通过使用p4保护表中的以下行来拒绝提交这些文件类型:
write user * * -//.../*.suo write user * * -//.../*.obj write user * * -//.../*.ccscc
我记得以前这样做,但我没有必要的权限来测试这里.查看Perforce的系统管理员指南并试一试
从版本2011.1开始,Perforce Streams使忽略文件变得更加容易.根据文档,您可以忽略目录中的某些扩展或某些路径.
从 p4 help stream
Ignored: Optional; a list of file or directory names to be ignored in client views. For example: /tmp # ignores files named 'tmp' /tmp/... # ignores dirs named 'tmp' .tmp # ignores file names ending in '.tmp' Lines in the Ignored field may appear in any order. Ignored names are inherited by child stream client views.
这基本上是@ raven的答案所指定的,但是使用流更容易,因为它使用该流自动传播到每个工作空间.它还适用于从您指定忽略类型的流继承的任何流.
您可以p4 stream //stream_depot/stream_name
在p4v的流视图中通过或右键单击流来编辑流.
正如@svec所说,每个工作区指定忽略文件的能力即将推出,实际上是在P4 2012.1测试版中.