hgignore: help ignoruje wszystkie pliki, ale niektóre

Potrzebuję .plik hgdontignore :-) aby dołączyć określone pliki i wykluczyć wszystko inne w katalogu. Zasadniczo chcę włączyć tylko .pliki jar w konkretnym katalogu i nic więcej. Jak mogę to zrobić? Nie znam się na składni wyrażeń regularnych. Czy Mogę to zrobić za pomocą składni glob? (Wolę to dla czytelności)

Jako przykładowa lokalizacja, powiedzmy, że chcę wykluczyć wszystkie pliki w foo/bar/ z wyjątkiem foo/bar/*.jar.

Author: sth, 2009-10-03

2 answers

Aby to zrobić, musisz użyć tego wyrażenia regularnego:

foo/bar/.+?\.(?!jar).+

Explanation

Mówisz mu, co ma ignorować, więc to wyrażenie szuka rzeczy, których ty nie chcesz.

  1. szukasz dowolnego pliku, którego nazwa (w tym względny katalog) zawiera (foo / bar/)
  2. następnie poszukujesz znaków poprzedzających kropkę ( .+?\. = = dopasuj jeden lub więcej znaków w dowolnym czasie, dopóki nie osiągniesz znaku kropki)
  3. ty więc upewnij się, że nie ma zakończenia" jar" (?!jar) (nazywa się to negatywnym spojrzeniem w przyszłość
  4. W końcu łapiesz zakończenie, które ma (.+)

Wyrażenia regularne są łatwe do zepsucia, więc zdecydowanie sugeruję, abyś otrzymał narzędzie takie jak Regex Buddy , które pomoże Ci je zbudować. Spowoduje to rozbicie wyrażenia regularnego na zwykły angielski, który naprawdę pomaga.

EDIT

Jason S

, złapałeś mnie, tęskni za tymi plikami.

To poprawione wyrażenia regularne będą działać dla każdego przykładu, który podałeś:

foo/bar/(?!.*\.jar$).+

Znajduje:

  • foo / bar / baz.txt
  • foo / bar / baz
  • foo / bar / jar
  • foo / bar / baz.słoik.txt
  • foo / bar / baz.słoik.
  • foo / bar / baz.
  • foo / bar / baz.txt.

Ale nie znajduje

  • foo / bar / baz.jar

Nowe Wyjaśnienie

To mówi szukać plików w " foo / bar/", następnie nie pasują, jeśli jest zero lub więcej znaki, po których następuje ".jar " i wtedy nie będzie więcej znaków ($ oznacza koniec linii), wtedy, jeśli tak nie jest, dopasuj następujące znaki.

 37
Author: Michael La Voie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:15

ODPOWIEDŹ od Michaela jest dobra, ale inną opcją jest po prostu wykluczenie:

foo/bar/**

A następnie ręcznie dodać .pliki jar. Zawsze możesz dodać pliki, które są wykluczone przez regułę Ignoruj i nadpisuje ona ignoruj. Musisz tylko pamiętać, aby dodać wszelkie słoiki, które utworzysz w przyszłości.

 41
Author: Ry4an Brase,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-24 01:42:18