2010-03-28 13 views

Odpowiedz

6

Odpowiedź jest w Subversion FAQ:

Istnieją szczególne przypadki, gdzie chcą zniszczyć wszystkie dowody z plik lub popełnić. (Być może ktoś przypadkowo popełnił poufny dokument .) To nie jest takie łatwe, ponieważ Subversion jest celowo zaprojektowany, aby nigdy nie stracić informacji. Korekty są niezmienne drzewa, które opierają się na jednym innym . Usunięcie wersji z historii spowoduje efekt domina, powodując chaos we wszystkich późniejszych wersjach i prawdopodobnie unieważniając wszystkie kopie robocze.

Projekt ma plany, jednak kiedyś wdrożyć svnadmin zniszczyć polecenia, które wykonać zadanie trwale usuwanie informacji. (Patrz problem 516.)

W międzyczasie, może jedynie do svnadmin zrzucić repozytorium, a następnie rurę dumpfile przez svndumpfilter (z wyłączeniem złej ścieżce) do polecenia obciążenia svnadmin. Zobacz rozdział 5 książki Subversion dla szczegóły na ten temat.

+0

dziękuję za to, oto dobry artykuł na ten temat: http://blog.projectnibble.org/2008/03/01/subversion-obliterate-the-forgotten-feature/ cheers – Marcin

0

rm -rf na repozytorium zazwyczaj działa dobrze.

+0

co z wewnętrznym svn db? – Marcin

+0

Żyłem pod wrażeniem, że svn zachowuje swoją bazę danych gdzieś w repozytorium serwerów, więc nuking repozytorium również się jej pozbędzie. Może się mylę. – che

1

Nie, nie wierzę, że istnieje.

Jeśli naprawdę potrzebujesz całkowicie usunąć pliki z historii SVN, myślę, że jedynym sposobem na zrobienie tego byłoby zrobienie czegoś takiego jak zrzucenie repozytorium, odfiltrowanie plików, których nie chcesz, z svndumpfilter, a następnie odtworzenie repozytorium ze zrzutu.

Dlaczego chcesz to zrobić?

+0

Mam projekt, który chciałbym całkowicie usunąć z mojego repo. – Marcin

0

to jest, jak to zrobić w systemie Linux:

/>svnadmin dump /path/to/repos > proj.dump 
/>cat proj.dump | svndumpfilter exclude somefolder > cleanproj.dump 
/>service svn stop 
/>BACKUP /path/to/repos/conf /path/to/repos/hooks (all custom configuration for this repository) 
/>DELETE /path/to/repos 
/>svnadmin create /path/to/repos 
/>RESTORE /path/to/repos/conf /path/to/repos/hooks 
/>svnadmin load /path/to/repos < cleanproj.dump 
/>service svn start 

zrobić

0

Jestem zakładając, że mówimy o wielu projektów w ramach tego samego repozytorium:

myrepo/ 
     project1/ 
     project2/ 

Jeśli chcesz po prostu, aby projekt zniknął bez wkręcania historii repozytorium, możesz po prostu ukryć tę ścieżkę, jeśli używasz uwierzytelnienia mechanizm, który wykorzystuje authz. Innymi słowy, jesteś nie przy użyciu "svn + ssh", aby uzyskać dostęp do repozytorium.

Załóżmy, że mam już grupę w moim authzu o nazwie "wszyscy". W moim authz ustawię coś takiego:

[/project1]: 
    @everyone = 
+0

Chciałbym go usunąć nie ukryty , dzięki. – Marcin

Powiązane problemy