2010-02-24 15 views
16

Zdaję sobie sprawę z dziwnego problemu z .gitignore w systemie Windows..gitignore nie rozpoznaje symbolu wieloznacznego mojego folderu w systemie Windows

Chcę, żeby git ignorował wszystkie pliki .exe, z wyjątkiem tych w folderze Dependencies (i wszystkich podfolderach).

Więc mam:

.gitignore:

*.exe 
!/Dependencies/**/*.exe 

To, niestety, nie działa.

Tymczasem to robi:

*.exe 
!/Dependencies/folder/subfolder/*.exe 

Więc zastanawiam się, czy jestem brudząc coś, czy to jakiś bug?

biegnę msysgit w systemie Windows (Windows 7 x64) wersji 1.6.5.1-preview20091022

Dzięki z góry za wszelkie wejścia :)

+2

Jest to w rzeczywistości ten sam problem/nieporozumienie jak http://stackoverflow.com/questions/1470572/ –

Odpowiedz

14

Od git 1.8.2 (March, 8th 2013) The ** jest obecnie obsługiwane:

Wzorce w .gitignore i .gitattributes plików może mieć **/, jako wzorzec, który odpowiada 0 lub więcej poziomów podkatalogu.

E.g. "foo/**/bar" pasuje "bar" w "foo" sam lub w podkatalogu "foo".

W twoim przypadku, to znaczy być obsługiwana linia ta może teraz:

!/Dependencies/**/*.exe 
+0

Awesome.Dzięki Von za kontynuację. –

+0

Dla potomności, jdigital również miał rację; był to problem związany z Windows fnmatch, który został naprawiony. –

2

.gitignore documentation mówi:

git traktuje wzorzec jako glob skorupa nadaje się do użycia przez fnmatch (3) z flagą FNM_PATHNAME

Możliwe jest na fnmatch na twojej platformie nie obsługuje ** w ścieżce.

+0

@jdigital ten jest również tym, co podejrzewałem (tak naprawdę się obawiałem). W takim przypadku może dojść do spustoszenia w repozytoriach międzyplatformowych :( –

2

Można dodać plik .gitignore do folderu Dependencies z

* .exe

wewnątrz. Oczywistym minusem jest to, że ignorowane specyfikacje są teraz rozproszone w kilku plikach.

+2

Dlaczego ta odpowiedź została przyjęta i zmieniona? Pytanie brzmiało, jak zignorować pliki '* .exe' ** z wyjątkiem ** dla tych w' Zależnościach '/'. –

Powiązane problemy