2010-09-03 14 views
6

Pewnemu inteligentnemu facetowi w biurze udało się przekazać całą masę plików "kopii zapasowej" (zaczynają się od ._) na nasz serwer subversion.Lista wszystkich wersji plików w subversion? (Usuń pliki po nazwie)

Najlepiej chciałbym usunąć te pliki przy użyciu jakiegoś podstawowego skryptu Bash zamiast przechodzić ręcznie przez repozytorium.

Czy istnieje sposób, aby uzyskać listę wszystkich wersjonowanych wersjami subversion w katalogu, aby można było wykonać podstawowe operacje grepping/svn?

edit:

„lista svn” nie jest rekurencyjny i wydaje się również do listy katalogów, muszę tego rodzaju zachowań, takich jak „odnaleźć”.

sekund edit:

Ok, flaga -R można zrobić 'listy svn' rekurencyjny ... ale jak mam się rozebrać katalogów?

+0

Nawiasem mówiąc, jeśli można przekonać się z biurem, polecam przeniesienie do bardziej nowoczesnych VCS, takich jak [git] (http://git-scm.com/) lub [Mercurial] (http://mercurial.selenic.com/). –

+0

@AndrewMarshall: Przeprowadziliśmy się do git prawie rok temu;) –

+1

Awesome! Nawet nie zdawałem sobie sprawy z tego, ile lat było to pytanie, ktoś dodał odpowiedź, więc przesunął się na samą górę i zobaczyłem: ': P'. –

Odpowiedz

4

Jeśli to tylko w jeden commit (lub serii zatwierdzeń), a następnie użyć svn merge aby go cofnąć.

Jeżeli użytkownik robi to na kilku zatwierdzeń i jesteś na Linuksie:

Najpierw należy sprawdzić, że to właściwie zawiera listę plików, które chcesz usunąć:

find . -name '._*' 

Wtedy rzeczywiście wywołać svn do usuń je:

find . -name '._*' -exec svn rm {} \; 

Sprawdź status svn, zatwierdz, jeśli dobrze.

Nota prawna: Nie testowałem poleceń, więc uważaj.

Myślę, że to pliki kopii zapasowej Mac, które tworzy automatycznie.

+0

To zadziałało pięknie, dzięki :) I tak, facet używa mac. –

5
svn list -R 

listę wszystkich plików i katalog rekurencyjnie

+0

Działa, ale wolno :-( –

3

Jak mogę usunąć katalogi?

Kluczem jest obserwowanie, że katalogi zakończą się ukośnikiem.

Następnie można użyć polecenia grep.

svn list -R my_svn_dir | grep -v '/$' 
Powiązane problemy