2009-08-09 13 views
64

widzę, że jest możliwe, aby wyświetlić listę właściwości określonych na każdym katalogu w obrębie repozytorium SVN korzystających proplist a flaga -R (rekurencyjne) i opisowy (-v):Jak wyświetlić wszystkie ignorowane wzorce ustawione za pomocą polecenia svn: ignore recursively w repozytorium SVN?

svn proplist -Rv 

To pokazuje mi wszystko właściwości, takie jak svn: mime-type lub svn: executable. Zamierzam filtrować to do tylko svn:ignore właściwości. Jestem pewien, że istnieje jakiś sposób, aby potokować wynik z tego polecenia za pomocą polecenia powłoki, które wyświetliłoby tylko linie, którymi jestem zainteresowany, ale nie mogę wymyślić, jak to zrobić. Jako przykład tego, co jest najbardziej użyteczne, jest taki typ polecenia jak ten (ale ten nie działa!).

svn proplist -Rv | grep "^ svn:ignore" | awk "{print \$1}" 

ja po prostu nie wiem wystarczająco dużo o poleceń powłoki jak grep i awk do tej pracy dla mnie. To po prostu pokazuje "svn: ignore" w kółko, ale nie wypisuje ścieżki katalogu ani zawartości właściwości svn:ignore. Oto przykład wyjścia z "svn proplist -Rv", które chciałbym pobrać, gdzie "cache" jest ścieżką, a "*" jest wartością właściwości.

Properties on 'cache': 
    svn:ignore 
    * 

Jak powyższe polecenie być wykonane do pracy i/lub czy istnieje lepszy sposób, aby wyświetlić wszystkie svn:ignore właściwości w moim repozytorium?

+1

Kilka wskazówek na temat awk: często używa się pojedynczych cudzysłowów dla skryptu wbudowanego, więc nie musisz uciekać z $, a może on również dopasować wyrażenie regularne do ciebie: 'awk '/ pattern/{print $ 1} ". Nie wiem svn - czy dane, które próbujesz zobaczyć w tej samej linii, co "svn: ignore"? Jeśli nie, twój problem jest nieco trudniejszy. Jeśli tak, czy chcesz po prostu drugie pole? – Cascabel

+0

Dane, które próbuję zobaczyć, niestety nie są * w tej samej linii, co svn: ignore. To treść bezpośrednio nad i bezpośrednio pod nią. W przykładzie w moim pytaniu chciałbym pobrać ścieżkę "cache", a także "*", ponieważ * oznacza, że ​​wszystko w "cache" jest ignorowane. Dziękujemy za wskazówki dotyczące awk. – stereoscott

+0

Mój zły - szukałem próbki i jakoś przebiegłem nad nią. – Cascabel

Odpowiedz

131
svn pg -R svn:ignore . 

... z pg jest skróconym zapisem dla propget, więc jest równa ...

svn propget -R svn:ignore . 
+11

@Ram - To nie działa rekursywnie. Git, podobnie jak SVN, pozwala ci [zastosować wzorce ignorowania do podkatalogów] (http: //www.kernel.org/pub/software/scm/git/docs/gitignore.html # _description) zamiast zwykłego .gitignore. Chcesz 'cat \' find -name .gitignore \ '| less' lub 'find -name .gitignore -exec cat {} \; | mniej ", ani tak piękne, jak użycie przełącznika -R IMO. (Powiedziałem, że podobał mi się twój [post na blogu] (http://blog.garlicsim.org/post/9583964892/a-git-users-first-and-hopefully-last-ayay-into). Uczę się Git z Subversion, warto rzucić okiem na drugą stronę płotu!) –

+2

'git svn show-ignore | grep -ve '^ # \ |^[[: space:]] * $'> .gitignore' –

1

Niestety skakać tu późno, ale nie jest to proste rozwiązanie tutaj.

Po prostu grep.

svn proplist -Rv | grep svn:ignore -B1 -A1 

Pokaż jedną linię przed i jedną linię po meczu.

Powiązane problemy