当前位置:  开发笔记 > 编程语言 > 正文

你能"忽略"Perforce中的文件吗?

如何解决《你能"忽略"Perforce中的文件吗?》经验,为你挑选了5个好方法。

我有时使用的功能"对账脱机工作......"在Perforce中的P4V IDE中发现同步起来,我已经从P4车厂工作,同时断开任何文件.它启动另一个窗口,执行'Folder Diff'.

我有文件,我从来不想检查源代码控制(如在bin文件夹中找到的DLL,代码生成输出等)有没有办法过滤这些文件/文件夹出现可能是"新"添加.它们往往会混淆我真正感兴趣的文件列表.P4是否具有Subversion的"忽略文件"功能?



1> raven..:

从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


虽然这有效,但它并不是很有用,因为您必须将这些行放入您创建的每个工作空间中.
@raven:1)(示例:)有些项目在每个项目下使用bin/obj文件夹,而不是将它们放在中心位置.(广义结论:) Perforce假设所有中间文件都放在一个容易排除的工作空间位置,这对于VCS来说是一种不必要的限制性设计.2)一些项目涉及目录结构中的本地缓存和/或其他每用户生成的文件(例如,*.ncb IntelliSense缓存).无法将它们排除为共同策略会严重损害Reconcile Offline Work和Diff Folders功能.
注意:这不适用于从p4v正常协调脱机工作."排除的文件"似乎只是在"高级"协调窗口中......
排除过滤器在"Reconcile Offline Work"对话框中不起作用.如果你在`Advanced Reconcile ...'中打开它,它确实有用,但这没用,因为99.9%的时候你不需要或不想使用高级对话框.
这个特殊问题正在扼杀我.
想象一下,在Python项目中进行协调是多么容易,其中列表将包含数百个`.pyc`文件.在工作空间中保持忽略规则的想法非常糟糕,谁能想象所有开发人员都能够同步他们的忽略规则?

2> Colonel Pani..:

对,但是.

Perforce版本2012.1增加了一个名为p4ignore的功能,灵感来自Git.然而,Perforce开发人员在没有正当理由的情况下对行为进行了更改,这恰好使该功能变得不那么有用.

虽然Git从所有.gitignore文件中获取规则,但在环境变量中指定文件名之前,Perforce不知道在哪里查看P4IGNORE.这种自由是一种诅咒.您不能破解为其忽略文件使用不同名称的两个存储库.

此外,Perforce的忽略功能无法解决问题.您可以轻松地为自己设置它,但除非明确选择加入,否则其他人不会受益.没有意外提交不受欢迎文件的贡献者(例如,bin由构建脚本创建的文件夹).

Git的忽略功能很棒,因为它可以解决问题.如果.gitignore文件被添加到存储库(每个人都这样做),他们将为每个人设计框.没有人会不小心发布他们的私钥.

有趣的是,Perforce文档将 ".p4ignore"显示为示例忽略规则,这是向后的!如果规则有用,则应将它们作为存储库的一部分进行共享.


Perforce仍然可以在该功能上取得成功.例如,选择文件名的约定p4ignore.txt,以便该功能可用于此框.删除P4IGNORE环境变量,这会适得其反.编辑文档,鼓励开发人员共享有用的规则.让用户在其主文件夹中的文件中编写个人规则,就像Git那样.

如果您认识Perforce的任何人,请发送电子邮件给他们.


谢谢你的澄清.我尝试将.p4ignore与P4VS一起使用但我的解决方案本应被忽略并未被忽略.首先我以为我做错了什么.现在我知道的更好.
在http://www.p4ideax.com/ideas/17856/make-the-ignore-feature-work-out-the-box上讨论'让忽略功能开箱即用'
Perforce不知道如何构建适当的软件,甚至不了解基础知识。这就是为什么每个坚持perforce的人都梦想着转向git的原因。

3> svec..:

这适用于Perforce 2013.1,新的P4IGNORE机制最初是在2012年版本中添加的,在Perforce博客中描述:

https://www.perforce.com/blog/new-20121-p4ignore

如当前所述,您将环境变量"P4IGNORE"设置为包含要忽略的文件列表的文件名.

所以你可以看一下,看看你喜欢它.



4> 小智..:

如果您想要一个适用于所有工作空间而无需复制的解决方案,您(或您的系统管理员)可以通过使用p4保护表中的以下行来拒绝提交这些文件类型:

write user * * -//.../*.suo
write user * * -//.../*.obj
write user * * -//.../*.ccscc

我记得以前这样做,但我没有必要的权限来测试这里.查看Perforce的系统管理员指南并试一试


不幸的是,这会导致提交错误,而不会忽略协调视图.因此,它可以将某些文件保留在存储库之外,但它无法帮助您的用户查看噪音.

5> Chance..:

从版本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测试版中.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有