Perforce ignore文件语法与gitignore语法有何不同?

Perforce ignore文件语法与gitignore语法有何不同?,git,perforce,gitignore,ignore,Git,Perforce,Gitignore,Ignore,Perforce能够实现.gitignore文件语法的哪一部分 P4IGNORE的Perforce文档显示了基本忽略和带模式的取消忽略: 据我所知,Perforce不支持: # Ignore file.txt, but not subdir/file.txt /file.txt # Ignore directories named foo, but not files named foo foo/ 忽略文件处理中还有其他区别吗?除了您列出的两个之外,我发现通配符与目录不匹配,只与文件匹配。此

Perforce能够实现.gitignore文件语法的哪一部分

P4IGNORE的Perforce文档显示了基本忽略和带模式的取消忽略:

据我所知,Perforce不支持:

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

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

忽略文件处理中还有其他区别吗?

除了您列出的两个之外,我发现通配符与目录不匹配,只与文件匹配。

此外,据我所知(P4IGNORE机制的文档不完整):

P4IGNORE似乎无法转义#(散列符号,这是我非常希望在P4IGNORE中使用的字符,因为EMACS创建名为#filename#的备份文件

看起来#in P4IGNORE是一个注释字符,但仅当一行中的第一个字符

所以

似乎忽略了所有包含#的文件。 i、 它似乎相当于Perl regexp qr{^.#.$}

这有点吓人,因为如果#是大多数系统中的正常注释字符,那么模式#将是一个*后跟一个注释#*,并将忽略所有文件。但它似乎可以工作

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

P4IGNORE似乎无法处理以下模式:

# matches any single character filename    
?
单个字符

[seq] 
匹配集合中的任何字符

等等,

因此,要忽略带有单个字母(如“a”)的文件名,我必须列出所有62种可能性[a-zA-Z0-9]。(我有创建tmp文件的习惯,如“a”、“b”…)

我还没有了解Perforce对文件名中句点的处理。
我确信忽略像“.#更多废话”这样的文件名 你必须这样做

.#*
除了

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

然而,在一些情况下

tmp-*
未捕获“tmp foo.txt”

我通过添加

tmp-*.*

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

我有一个类似的问题,然后在那里我发现Perforce确实接受.gitignore文件

事实上,您可以在P4IGNORE中指定多个文件名。实际上,我的P4IGNORE如下所示(这是2015.2中的一项新功能):

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


这对于最新的Perforce版本来说已经过时了。据我所知,Perforce现在完全支持.gitignore语法。尽管文章说“Git ignore语法完全受支持”,但我相当肯定,对于诸如?、?之类的模式,Git单字符通配符仍然不受支持。尽管文章说“完全支持Git ignore语法”,我相当肯定Git单字符通配符对于诸如?,?之类的模式仍然不受支持。
tmp-*.*