How does Perforce ignore file syntax differ from gitignore syntax?
I had a similar question and then found this article where I learned that Perforce does accept .gitignore files.
In fact, you can specify more than one filename in P4IGNORE. In reality, my P4IGNORE looks like this (this is a new feature in 2015.2):
P4IGNORE=$home/.p4ignore;.gitignore;.p4ignore;
Also, as far as I can tell (the P4IGNORE mechanism is incompletely documented):
P4IGNORE seems to have no way to escape # (the hash sign, a character that I really want to have in P4IGNORE since EMACS creates backup files named #filename#.
It looks like # in P4IGNORE is a comment character, but only if the first character on a line.
So
*#*
seems to ignore all files with # in them.i.e. it seems to be the equivalent of Perl regexp qr{^.#.$}.
This is a bit scary, since if # was the normal comment character in most systems, the pattern # would be a * followed by a comment #*, and would ignore all files. But it seems to work.
(Git's handling of # is a bit special as well.)
P4IGNORE does not seem to handle patterns such as
# matches any single character filename ?
a single character
[seq]
matches any character in set
etc.,
so to ignore a filename with a single letter like 'a', I had to list all 62 possibilities [a-zA-Z0-9]. (I have a habit of creating tmp files like 'a', 'b' ...).
I have not yet grokked Perforce's handling of periods in filenames.
I know for sure that to ignore a filename like '.#more-crap'you have to do
.#*
in addition to
*#*
but this may just be normal dot file hiding.
However, there have been several cases where a pattern like
tmp-*
was not catching 'tmp-foo.txt'
that I fixed by adding
tmp-*.*
(Note: most recently I have been using bzr and hg, with fully powerful regexps, so may be looking for stuff more powerful than git provides)