Perforce如何忽略文件语法与gitignore语法不同?

时间:2013-08-14 19:00:53

标签: git perforce gitignore ignore

Perforce能够实现的.gitignore文件语法的几分之一?

P4IGNORE的Perforce文档显示基本忽略和忽略模式:http://www.perforce.com/perforce/r12.1/manuals/cmdref/env.P4IGNORE.html

据我所知,Perforce不支持:

# Ignore file.txt, but not subdir/file.txt
/file.txt

# Ignore directories named foo, but not files named foo
foo/

忽略文件处理中是否还有其他差异?

3 个答案:

答案 0 :(得分:4)

我有一个类似的问题,然后找到了这个article,我了解到Perforce确实接受了.gitignore文件。

  

实际上,您可以在P4IGNORE中指定多个文件名。实际上,我的P4IGNORE看起来像这样(这是2015.2中的新功能):

     

P4IGNORE=$home/.p4ignore;.gitignore;.p4ignore;

答案 1 :(得分:3)

除了你列出的两个,我还看到通配符与目录不匹配,只有文件。

答案 2 :(得分:2)

另外,据我所知(P4IGNORE机制未完整记录):

P4IGNORE似乎无法逃脱#(哈希标志,我真正想要在P4IGNORE中拥有的一个角色,因为EMACS创建名为#filename#的备份文件。

看起来P4IGNORE中的#是一个注释字符,但只有当一行中的第一个字符时才会出现。

所以

*#*

似乎忽略了#中的所有文件。 即它似乎相当于Perl regexp qr {^。#。 $}。

这有点可怕,因为如果#是大多数系统中的正常注释字符,则模式将是*后跟注释#*,并且会忽略所有文件。但似乎有效。

(Git对#的处理也有点特别。)

P4IGNORE似乎不会处理

等模式
# matches any single character filename    
?

单个字符

[seq] 

匹配集合中的任何字符

等,

所以要忽略带有单个字母的文件名,例如' a',我必须列出所有62种可能性[a-zA-Z0-9]。 (我习惯于创建tmp文件,例如' a'' b' ...)。

我还没有理解Perforce对文件名中句点的处理 我肯定知道要忽略像#'。#more-crap' 你必须这样做

.#*

除了

*#*

但这可能只是普通的点文件隐藏。

但是,有几种情况下像

这样的模式
tmp-*

没有抓住&t; tmp-foo.txt'

我通过添加

来修复
tmp-*.*

(注意:最近我一直在使用bzr和hg,具有完全强大的regexp,因此可能正在寻找比git提供的功能更强大的东西)