我们可以"忽略" Perforce中的文件吗?

时间:2020-03-05 18:51:07  来源:igfitidea点击:

有时,我会使用Perforce的P4V IDE中的"协调离线工作..."功能来同步与P4软件仓库断开连接时正在处理的所有文件。它启动另一个执行"文件夹差异"的窗口。

我有一些我永远不想检入源代码管理的文件(例如在bin文件夹中找到的文件,例如DLL,代码生成的输出等)。是否有一种方法可以过滤掉这些文件/文件夹,使其不再显示为" new"添加。它们往往会使我真正感兴趣的文件列表变得混乱。P4是否具有Subversion的"忽略文件"功能的等效功能?

解决方案

回答

从2012.1版本开始,Perforce支持P4IGNORE环境变量。我更新了有关忽略目录的问题的答案,并解释了其工作原理。然后我注意到了这个答案,我想现在已经多余了。

假设我们有一个名为" CLIENT"的客户端,一个名为" foo"的目录(位于项目根目录),并且希望忽略该目录树中的所有.dll文件,则可以在工作区视图中添加以下几行以完成这:

-//depot/foo/*.dll //CLIENT/foo/*.dll
-//depot/foo/.../*.dll //CLIENT/foo/.../*.dll

第一行将其从目录" foo"中删除,第二行将其从所有子目录中删除。现在,当我们"协调脱机工作..."时,所有.dll文件都将移动到文件夹diff显示底部的"已排除文件"文件夹中。它们将不碍我们使用,但如果我们确实需要,它们仍然可以查看和操作它们。

我们也可以使用另一种方法,将" Excluded Files"文件夹减少到一个,但是由于路径已损坏,我们将无法操作其中包含的任何文件(但是如果我们希望将它们删除)以方式,没关系)。

-//depot/foo.../*.dll //CLIENT/foo.../*.dll

回答

威尔关于使用.p4ignore的建议似乎只适用于WebSphere Studio(P4WSAD)插件。我只是在本地Windows框上尝试过,所有列出的文件和目录都不会被忽略。

Raven修改客户规范的建议是Perforce的正确方法。正确组织代码/数据/可执行文件和生成的输出文件,将使排除文件免于检入的过程变得更加容易。

作为一种更严格的方法,我们始终可以编写一个提交触发器,如果​​包含某些文件或者具有某些扩展名的文件等,则拒绝更改列表的提交。

回答

如果使用的是Eclipse Perforce插件,则插件文档列出了几种忽略文件的方法。

回答

如果我们想要一种无需复制即可应用于所有工作空间的解决方案,则我们(或者sysadmin)可以通过使用p4保护表中的以下代码行拒绝提交这些文件类型:

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

我记得以前曾经做过,但是我没有必要的权限才能在此处进行测试。查看Perforce的Sysadmin指南并尝试一下

回答

历史答案不再正确。在最初编写时,这是真的。

我们无法写入和检入服务器将用于制定忽略规则的文件; perforce中的常规glob或者regexp文件模式忽略。

其他答案具有全局服务器配置(而不是每个文件夹)。
如果我们希望每个文件夹中的视图在一行中乘以要在该单个文件夹中忽略的扩展数,或者仅在WebSphere Studio插件中提供此功能,或者为服务器提供此功能,其他答案将显示可能对我们有用的内容管理员,但对用户不可用。

简而言之,我发现Perforce在这方面确实很薄弱。尽管我赞赏使用Eclipse插件的人可以使用.p4ignore,但我认为这很棒,但它却使我们中那些不愿意使用的人陷入了黑暗。

更新:请参见2012年中新增的P4IGNORE功能的可接受答案。