2013-08-14 31 views
7

Jaki fragment składni pliku .gitignore Perforce był w stanie zaimplementować?W jaki sposób Perforce ignoruje składnię pliku różni się od składni gitignore?

dokumentacja

Perforce dla P4IGNORE pokazuje podstawowe ignoruje i un-ignoruje z wzorami: http://www.perforce.com/perforce/r12.1/manuals/cmdref/env.P4IGNORE.html

Jak najlepiej mogę powiedzieć, Perforce nie obsługuje:

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

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

Czy są jakieś inne różnice w ignorować przetwarzanie plików?

+0

To jest nieaktualna dla najnowszego wydania Perforce. O ile mogę powiedzieć, Perforce teraz w pełni obsługuje składnię .gitignore. –

+0

Mimo że w artykule napisano: "Składnia ignorowania Git jest w pełni obsługiwana", jestem dość pewna, że ​​pojedynczy znak wieloznaczny git dla wzorców takich jak?, ??, wciąż nie jest obsługiwany. Zobacz http://blog.andy.glew.ca/2016/09/perforce-git-ignore-syntax-is-fully.html –

Odpowiedz

3

Oprócz dwóch wymienionych na liście widziałem, że symbole wieloznaczne nie są zgodne z katalogami, a jedynie plikami.

2

Ponadto, o ile mogę powiedzieć (mechanizm P4IGNORE jest niepełny udokumentowane):

P4IGNORE wydaje się nie mieć drogę ucieczki # (znak hash, znak, że naprawdę chcą mieć w P4IGNORE od Emacs tworzy kopii zapasowych plików o nazwie nazwa_pliku # #.

wygląda # w P4IGNORE jest komentarz charakter, ale tylko wtedy, gdy pierwszy znak w linii.

Więc

*#* 

wydaje się ignorować wszystkie pliki z # w nich. tj. Wydaje się być odpowiednikiem Perl regexp qr {^. #. $}.

To trochę przerażające, ponieważ jeśli # jest normalnym znakiem komentarza w większości systemów, wzorzec # będzie oznaczony *, a po nim komentarz # * i zignoruje wszystkie pliki. Ale wydaje się, że działa.

(obsługa Git jest od # jest nieco szczególny, jak również.)

P4IGNORE nie wydają się obsługiwać wzory takie jak

# matches any single character filename  
? 

pojedynczy znak

[seq] 

dopasowuje dowolny znak w zestawie

itp.,

więc zignorować nazwę pliku pojedynczą literą jak "a", musiałem wymienić wszystkie 62 możliwości [a-zA-Z0-9]. (Mam zwyczaj tworzenia plików tmp takich jak "a", "b" ...).

Nie mam jeszcze pojęcia, jak Perfce radzi sobie z okresami w nazwach plików.
wiem na pewno, że ignorowanie nazw takich jak „# bardziej tragiczne” trzeba zrobić

.#* 

oprócz

*#* 

ale może to być po prostu normalny plik kropka ukrywanie .

Jednak było kilka przypadków, w których wzór jak

tmp-* 

nie łapanie 'TMP foo.txt'

że ustalony przez dodanie

tmp-*.* 

(Uwaga : ostatnio używałem bzr i hg, z pełnymi możliwościami wyrażeń regularnych, więc może szukam rzeczy potężniejszych niż git)

4

Miałem podobne pytanie, a następnie znalazłem to article, gdzie dowiedziałem się, że Perforce akceptuje pliki .gitignore.

W rzeczywistości można podać więcej niż jedną nazwę pliku w P4IGNORE. W rzeczywistości, mój P4IGNORE wygląda następująco (jest to nowa funkcja w 2015.2):

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

+1

Mimo że w artykule napisano "Składnia ignorowania Git jest w pełni obsługiwana", jestem całkiem pewien, że git, pojedynczy znak wieloznaczny, dla wzorców takich jak?, ??, nadal nie jest obsługiwany. –