2010-06-08 10 views
5

Nie wiem dokładnie, jak to się stało, ale mam repozytorium w wersji ".svn" w moim repozytorium. Nie pytaj mnie, jak się tam dostał. Jeśli polecam svn, aby go usunąć, to nie chce, ponieważ .svn jest zarezerwowanym argumentem.subversion: pozbycie się wersji ".svn" katalogu

Siła nie działa.

Wszelkie pomysły?

EDIT:. Ok rozwiązałem go przez svn rm ing katalogu nadrzędnego i dodanie go z powrotem w

Mimo to, jeśli ktoś zna rozwiązanie tego czystego, to byłoby bardzo mile widziane.

Wyjaśnienie:

svn delete <repo url>/foo/.svn 

nie działa. Myślę, że wypróbowałem każdą prostą kombinację poleceń i argumentów. Jestem prawie pewien, że jeśli jest to wykonalne, to jest hack. Znam metodę: dump -> modify dump with tool -> reimport ale to jest tak straszne jak diabli. To nie jest git, jeśli walniesz w repozytorium svn, ty zostajesz pobity.

+2

"Nie pytaj mnie, jak się tam dostał." Cóż, "log svn" powiedziałby ci. – sbi

+0

To jest dobry pomysł. "svn log -v" mówi mi, że został dodany. Niewiele więcej można się z tego wyłapać. Musiał zrobić "svn add" w swoim katalogu nadrzędnym. Wciąż jest to dziwne, ponieważ svn add zwykle niszczy lub narzeka na istniejące katalogi .svn. – AndreasT

+1

tutaj, 'svn log' mówi także, kto dodał, kiedy i co jeszcze zostało zrobione w tym samym zatwierdzeniu. Zazwyczaj wystarczy, aby zrozumieć, kto zrobił co. ':)' – sbi

Odpowiedz

2

"svn rm" z adresem URL wydaje się działać prawidłowo, po prostu próbowałem go (za pomocą svn 1.6.5, Mac OS X):

$ svn ls -R file:///xxx/testrepo 
foo/ 
foo/.svn/ 
foo/.svn/baz 
foo/bar/ 
foo/bar/baz 

$ svn rm -m 'Yes it works.' file:///xxx/testrepo/foo/.svn 
Committed revision 6. 

$ svn ls -R file:///xxx/testrepo 
foo/ 
foo/bar/ 
foo/bar/baz 

Można również użyć "svn mv", nie ma potrzeby aby usunąć wszystko:

$ svn ls -R file:///xxx/testrepo 
foo/ 
foo/.svn/ 
foo/.svn/baz 
foo/bar/ 
foo/bar/baz 

$ svn mv -m 'Rename works too.' file:///xxx/testrepo/foo/.svn \ 
    file:///xxx/testrepo/foo/dotsvn 
Committed revision 8. 

$ svn ls -R file:///xxx/testrepo 
foo/ 
foo/bar/ 
foo/bar/baz 
foo/dotsvn/ 
foo/dotsvn/baz 

PS. Tworzenie katalogów ".svn" w repozytoriach svn jest proste: wystarczy użyć svn cp lub svn mv z adresami URL.

0

Wystarczy svn delete to z repozytorium bezpośrednio np

svn rm -m "removing checked-in .svn" http://myserver/svn/repo/trunk/dir/.svn

następnie usunąć lokalną kopię i svn update pobrać wersję poprawioną.

+0

To nie działa, ponieważ svn delete nie akceptuje również .svn jako parametru. To właśnie miałem na myśli przez "Jeśli powiem svn, aby go usunąć ..." w moim tekście pytania. – AndreasT

Powiązane problemy