2009-11-05 11 views
17

Czy ktoś może mi powiedzieć wzór .hgignore do śledzenia jednego określonego pliku w katalogu i zignorować wszystko inne?.hgignore całe drzewo katalogów z wyjątkiem jednego określonego pliku

Mam katalog "media", który zawiera "default.png", dla oczywistych celów, a reszta katalogu będzie przechowywać nośnik użytkownika. Chcemy, aby hg zignorował wszystko w katalogu medialnym z wyjątkiem domyślnego pliku.

Odpowiedz

25

Spróbuj:

syntax: regex 
^media/.* 

lub (zostawić go w domyślnej glob i robić)

media/** 

a następnie ręcznie hg add media/default.png.

W trybie mercurial (inaczej niż w CVS) można dodawać pliki pasujące do wzorców ignorowania i działają poprawnie. Więc zignoruj ​​ogólnie i hg add to, co chcesz śledzić.

+1

to działa, ale wymaga ręcznego dodania żądanych plików, a hg nie zauważy, jeśli dodasz nowy plik pasujący do wzorca (jeśli pasowałeś na przykład na * .c). – frankster

+0

Całkowicie prawda. Wciąż wolę to od negatywnych rzeczy, ale nie wszyscy. Osobiście po prostu upewniam się, że moje pliki przejściowe i moje pliki do pobrania znajdą się w różnych katalogach, więc nie muszę się o to martwić. –

4

Nieważne, to wydaje się działać ...

syntax: regex 
^media/(?!default.png) 
+0

byłoby to również dopasować default.png.sadkjsdhfdshfjkds – frankster

+0

tak, potrzebuje „$ "na koniec, aby być pewnym. zobacz swoją odpowiedź. –

6
syntax: regex 
^media/(?!default.png$) 

prawie tak samo jak John Mee, ale pasuje do końca linii, zamiast wszystkiego, co zaczyna się od default.png.

jeśli chciał pozwolić dowolny plik .c ale nic innego, można użyć:

^media/(?!.+\.c$) 
5

Reasumując jako BKM (najbardziej znana metoda)

Albo hgignore wszystko, a następnie hg dodaj kilka plików, które chcesz śledzić.

Albo użyć wzoru takiego jak

syntax: regex 
^path/(?!files-that-you-want-not-to-ignore$) 

(Chciałem tylko zobaczyć pełną odpowiedź w jednym miejscu).

+1

Jak określić wiele plików? – m4l490n

Powiązane problemy