10

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/

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

4

3 回答 3

5

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

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

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

于 2016-05-27T13:06:12.307 回答
4

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

于 2013-08-15T03:33:42.113 回答
4

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

P4IGNORE 似乎没有办法转义#(井号,一个我真的想在 P4IGNORE 中使用的字符,因为 EMACS 创建了名为#filename# 的备份文件。

看起来 P4IGNORE 中的 # 是一个注释字符,但前提是一行的第一个字符。

所以

*#*

似乎忽略了所有带有 # 的文件。即它似乎相当于 Perl 正则表达式 qr{^. #. $}。

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

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

P4IGNORE 似乎无法处理诸如

# matches any single character filename    
?

单个字符

[seq] 

匹配集合中的任何字符

ETC。,

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

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

.#*

此外

*#*

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

但是,在某些情况下,像这样的模式

tmp-*

没有捕捉到“tmp-foo.txt”

我通过添加修复

tmp-*.*

(注意:最近我一直在使用 bzr 和 hg,它们具有完全强大的正则表达式,所以可能正在寻找比 git 提供的更强大的东西)

于 2016-02-11T20:23:09.330 回答