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/
忽略文件处理中是否还有其他差异?
答案 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提供的功能更强大的东西)