2009-08-05 16 views
46

Nie jestem nowy w Subversion, ale do tej pory używałem Tortoise, a nigdy linii commadn. Moje pytanie brzmi: jak zignorować wszystkie pliki, takie jak * .o z CAŁEGO źródła, nie tylko z katalogu głównego.Rekursywne ignorowanie plików w całym drzewie źródłowym w subversion

Na przykład, jeśli mam następujące pliki: /myfile.o /folder1/myfile2.o /folder1/folder1.1/myfile3.o /folder2/myfile4.o

Jeśli svn propedit svn: ignore "." w katalogu głównym i dodaj * .o, zignoruje plik myfile.o, ale nie zignoruje /folder1/myfile2.o, /folder1/folder1.1/myfile3.o, /folder2/myfile4.o. Czy istnieje sposób na dodanie * .o do całego projektu (nie mogę tego zrobić dla całego repozytorium, o którym wiem, że można to zrobić, ponieważ projekt ten znajduje się w repozytorium z wieloma innymi projektami)?

Proszę dać mi znać, jeśli muszę wyjaśnić. Dzięki!

Odpowiedz

63

Edit

Oryginalny odpowiedź Poniżej podano przed Subversion v1.8 która wprowadziła sposób ustawić domyślny poziom repozytorium ignorować (tzw svn:global-ignores) bez przesłanianie/wymiana własność svn:ignore w katalogu głównym i każdy pojedynczy podkatalog. Od 1,8, najlepszym sposobem, aby osiągnąć to, co chcesz, to aby wywołać następującą komendę (zasługa TManhente):

svn propset svn:global-ignores '*.o' . 

Na wcześniejszych wersjach (i nowszych), można nadal stosować metodę wskazaną w oryginalna odpowiedź poniżej; pamiętaj jednak, że to oznacza, że ​​możesz zastąpić/nadpisać właściwość svn:ignore w każdym podkatalogu ... może to być dobre dla małego/nowego repozytorium, ale prawdopodobnie nie jest to, co chcesz, jeśli masz duży/stary repozytorium, w którym niektóre podkatalogi mogą mieć niezależne właściwości, których nie chcesz zastępować.

odpowiedź Original

Można użyć "-R" lub "--recursive opcję" z "svn propset", jak w następującym poleceniem:

 
svn propset svn:ignore '*.o' . --recursive 

Więcej informacji

W obu przypadkach można użyć następującego polecenia, aby uzyskać więcej informacji na temat zestawu svn:

 
svn help propset 
+0

Dzięki, że działało świetnie! Nadal rozumiem ich dokumentację. Jak już wspomniałem, do niedawna używam wyłącznie żółwia, co daje miłe okna dialogowe i wyjaśnienia :). – alanquillin

+1

masz także --force 'svn propset svn: ignore" * .pdb * .db "c: \ portal \ --recursive --force –

+43

Zaakceptowana odpowiedź usunie wszystkie twoje inne ustawienia svn: ignore, jeśli miałeś im. możesz wtedy chcieć http://stackoverflow.com/questions/3086418/svn-revert-all-properties-changes –

38

właśnie aktualizacja: Subversion 1.8.0 wprowadzono dziedziczone właściwości i Repository podyktowane konfiguracji (dla auto-rekwizytów i ignoruje), które mogą być również wykorzystywane w tym przypadku. Można ustawić nową właściwość svn:global-ignores w ścieżce katalogu głównego. Będzie "wpływał tylko na podtktory zakorzenione na ścieżce, na której ustawiona jest własność".

Ta nowa właściwość jest ustawiona tak jak svn:ignore:

svn propset svn:global-ignores '*.o' . 

Więcej informacji dostępnych jest na Subversion 1.8.0 Release Notes.

+0

Naprawdę chciałbym wiedzieć, jak ustawić go za pomocą auto-rekwizytów? – mgouin

3

Jak wskazano w @ hackmaster.a w komentarzu, przykład podany w zaakceptowanej odpowiedzi ma efekt uboczny wymazania wszystkich poprzednich ustawień svn:ignore. Używanie propedit zamiast propset również nie działa.

Prawo sposób, aby dodać kilka plików rekurencyjnie jest umieszczenie ich nazwisk na liście oddzielone nowych linii w zestawie svn:ignore nieruchomości z svn propset svn:ignore "[LIST]" .

na przykład:

svn propset svn:ignore -R "*.pkl 
    > *.class 
    > Thumbs.db 
    > data.tmp" . 

oczywiście > „s są tylko monitami powłoki.

To polecenie zmieni rekurencyjnie właściwości katalogu svn:ignore katalogu bieżącego . i każdego z podfolderów.

+0

Używanie 1.7.4 powoduje usunięcie wszystkich svn: ignore – lrkwz

+0

Dzięki. Działa z svn, wersja 1.8.10. –

Powiązane problemy