2009-08-27 8 views
8

Rozpocząłem projekt i dodałem go do Mercurial. Ale chcę wziąć plik *.cs tylko pod kontrolą wersji. Muszę więc dodać katalog bin, obj, sln, suo, _resharper, aby zignorować wzór.Jak pozwolić Mercurialowi zignorować każdą rzecz oprócz pliku * .cs?

Jak zezwolić Hg na monitorowanie tylko niektórych rodzajów plików, takich jak biała lista? Jak to zrobić w Subversion?

+0

Mercurial lub Subversion lub jedno i drugie? – inerte

+0

Tylko Mercurial jest w porządku, zarówno jeśli znasz – prime23

Odpowiedz

8

Wystarczy dodać rozszerzenia pliku .hgignore jak można natknąć się nimi.

syntax: glob 
*.bin 
*.obj 

i tak dalej To nie jest dużo pracy, i dokumenty do reszty świata, jakiego rodzaju plików, które uznają za nieważne kontroli rewizyjnej.

można nawet konfiguracja globalna ignorować plik, proszę zobaczyć ignore entry in the [ui] section.

Próbuje włączyć .hgignore do góry nogami za pomocą negatywnych wyrażeń regularnych z wyprzedzeniem, a inne voodoo to (moim zdaniem) niezbyt dobry pomysł. Prawie na pewno nie zadziała i doprowadzi tylko do zamieszania. Dzieje się tak dlatego, ponieważ hg dopasowuje wszystkie prefiksy nazwy ścieżki podanej przed rules in .hgignore. Tak jak plik

a/b/c.cs 

będą ignorowane, jeśli którykolwiek z

a/b/c.cs 
a/b 
a 

towarzyszą z reguły w pliku .hgignore. W szczególności oznacza to, że nie można użyć negatywnego wyrażenia z wyprzedzeniem, aby a/b/c.cs nie zostało zignorowane - reguła będzie zgodna z a/b lub a.

+0

Więc mówisz, że nie ma operatora negacji? –

+0

Mike: Tak, niestety. Zobacz ten numer: http://mercurial.selenic.com/bts/issue712, gdzie możesz zostawić komentarz, jeśli jesteś bardzo zainteresowany. –

-2

Dodaj plik o nazwie .hgignore do swojego repozytorium z tymi treściami.

syntax: regexp 

^\.cs 

Subversion nie pozwalają używać regex ignorowanie plików tylko podzbiór glob syntax aby dopasować nazwy pliku/katalogu. Nie miałem pojęcia, jak sprawić, by nie ignorować pliki kończące się .cs więc szukałem w internecie i this webpage mówi:

svn propset svn:ignore "*[!c][!s] 
*.cs?*" . 

używać go z rozwagą :)

Edycja: Martin Geisler ma rację, a ja byłem w błędzie , składnia wyrażeń regularnych jest niepoprawna. Przepraszam. Prawidłowa koncepcja jest tam, ale nie metaznaki ... :(

+0

regexp '^ \. Cs' spowoduje, że' hg' zignoruje plik o nazwie '.cs' w katalogu głównym repozytorium. Nie spowoduje to, że 'hg' zignoruje wszystkie pliki * nie * pasujące do' * .cs' (wzór globalny). –

+0

Tak, próbowałem, to nie działa. – prime23

1

chodzi o link do Mercurial emisji dostarczanych przez Martin Geisler (https://www.mercurial-scm.org/bts/issue712), należy pamiętać, że problem nie jest jedną z trudności technicznych, ale wsparcie:

Jest to starożytna i powtarzające się żądania cecha, które odrzuciłem dobrze , zanim ten błąd został utworzony. Napisałem i wsparłem kilka składni plików włączających/wykluczających i zdecydowałem, że wolałbym powiedzieć "nie, ty nie możesz tego zrobić" raz do 1% użytkowników niż "nie, czytasz dokumenty źle" wielokrotnie do 20% użytkowników. — Matt Mackall (wywoływacz Mercurial)

Powiązane problemy