SVN: Folder jest już pod kontrolą wersji, ale nie spełnia?

111
mark@mark-ubuntu:~/myproject$ svn stat
?       runserver.sh
?       media/images/icons
?       apps/autocomplete
mark@mark-ubuntu:~/myproject$ svn add apps/autocomplete
svn: warning: 'apps/autocomplete' is already under version control

svn statmówi, że nie jest pod kontrolą wersji, więc próbuję go dodać, a potem mówi mi, że tak. Kiedy robię svn ci, nie zostaje ono zatwierdzone i nie pojawia się, gdy próbuję przeglądać repozytorium online.

Jak mam to zrobić?

mpen
źródło
3
Czy folder „autouzupełnianie” zawiera uszkodzony podkatalog „.svn”? Poza tym sprzątałeś? :)
bzlm
1
Czy próbowałeś wyczyścić: svn, po prostu dźgnąć w ciemność?
shaunhusain
Napotkałem ten problem, kiedy skopiowałem wpisany katalog do innego folderu w moim projekcie. Usuwanie starego pliku .svn działa!
paulrehkugler
I stanowczo dodaje pliki: svn add --force /path/to/filelub jeśli chcesz dodać katalog rekurencyjnie: svn add --depth infinity --force /path/to/directory.
joker

Odpowiedzi:

162

Skopiuj problematyczny folder do katalogu kopii zapasowych i usuń go z katalogu roboczego SVN. Pamiętaj, aby usunąć wszystkie .svnukryte katalogi ze skopiowanego folderu.

Teraz zaktualizuj swój projekt, wyczyść i zatwierdź to, co zostało. Teraz przenieś folder z powrotem do katalogu roboczego, dodaj go i zatwierdź. W większości przypadków to obejście działa, wydaje się, że w zasadzie SVN się pomylił ...

Aktualizacja: cytując komentarz @Mark :

Nie trzeba było przenosić folderu, wystarczy usunąć .svnfolder, a następnie dodać svn.

Tomasz Nurkiewicz
źródło
52
Nie trzeba było przenosić folderu, wystarczy usunąć .svnfolder, a następnie dodać svn.
mpen
6
+1 za uprzyjemnienie sobie dnia ;-) Jak powiedział Mark, dla mnie wystarczyło usunąć katalogi .svn w problematycznym folderze.
rturrado
23
Dziękujemy za zidentyfikowanie SVN jako całkowitego BS.
Steve K
1
teraz, gdy masz tylko .svn w górnym folderze, nie możesz zrobić tego BS, jeśli metadane są uszkodzone, jesteś
wzniesiony
odznacz folder nadrzędny (aplikacje / autouzupełnianie) z listy, jeśli już
zatwierdzono
20

Miałem podobnie wyglądający problem po dodaniu drzewa katalogów, które zawierało katalogi .svn (ponieważ był to svn: external w swoim środowisku źródłowym): status svn powiedział mi „?”, Ale podczas próby dodania było to „już” pod kontrolą wersji ”.

Ponieważ nie było innych wersjonowanych katalogów, zrobiłem to

find . -mindepth 2 -name '.svn' -exec rm -rf '{}' \;

aby usunąć błędne katalogi .svn; po wykonaniu tej czynności udało mi się dodać nowy katalog.

Uwaga :

  • Jeśli zawarte są inne wersjonowane katalogi, wyrażenie find należy zmienić, aby było bardziej szczegółowe
  • Jeśli nie masz pewności, najpierw pomiń część „-exec ...”, aby zobaczyć, co zostanie usunięte
Tobias
źródło
Chociaż ta odpowiedź zadziałała dla mnie, gdy użyłem jej po raz pierwszy, znalazłem się w niewłaściwym folderze i spowodowałem niezły bałagan. Wydaje się, że jest to dobre miejsce, aby przypomnieć ludziom, aby „zmierzyć dwa razy, raz wyciąć”, czyli dokładnie sprawdzić szczegóły przed uruchomieniem tego.
BishopZ
Polecam ... -exec echo {} \;opcję „jeśli nie masz pewności”, aby mieć pewność, że przełącznik -exec również będzie działał dobrze.
FlipMcF
zalecamy również dodanie -type ddo znaleziska. Nazwij mnie wybrednym, dopóki nie rm -rfposuniesz się trochę za daleko. Poza moimi czubkami - myślę, że to poprawna odpowiedź.
FlipMcF
15

Odmiana odpowiedzi @ gauss256 , usuwanie .svn, zadziałała dla mnie:

rm -rf troublesome_folder/.svn
svn add troublesome_folder
svn commit

Przed rozwiązaniem Gaussa wypróbowałem podejście @ jwir3 i nie miałem radości:

svn cleanup
svn cleanup *
svn cleanup troublesome_folder
svn add --force troublesome_folder
svn commit
płyty
źródło
14

(1) To właśnie mi się przydarzyło i pomyślałem, że to ciekawe, jak to się stało. Zasadniczo skopiowałem folder do nowej lokalizacji i zmodyfikowałem go, zapominając, że przyniesie ze sobą wszystkie ukryte katalogi .svn. Kiedy zdasz sobie sprawę, jak to się dzieje, łatwiej będzie tego uniknąć w przyszłości.

(2) Rozwiązaniem jest usunięcie katalogów .svn, ale musisz to zrobić rekurencyjnie w całym drzewie katalogów. Najłatwiej to zrobić:

find troublesome_folder -name .svn -exec rm -rf {} \;
gauss256
źródło
3

Czy próbowałeś wykonać czyszczenie svn?

jwir3
źródło
2
Ja też napotkałem ten problem. Potem spróbowałem svn cleanupi to nie pomogło.
imacake
3

Poszukaj katalogu „apps / autocomplete / .svn”. Przenieś go w bezpieczne miejsce (na wypadek, gdybyś musiał go przywrócić, ponieważ to nie zadziałało) i sprawdź, czy to rozwiąże problem.

jerryb
źródło
0

Znalazłem rozwiązanie na wypadek, gdybyś zainstalował Eclipse (Luna) z klientem SVN JavaHL (JNI) 1.8.13 i Tortoise :

Otwórz Eclipse: Najpierw spróbuj dodać moduł projektu / maven do kontroli wersji (Projekt -> Menu kontekstowe -> Zespół -> Dodaj do kontroli wersji)

Zobaczysz następujący komunikat o błędzie Eclipse:

org.apache.subversion.javahl.ClientException: Wpis już istnieje svn: „PathToYouProject” jest już pod kontrolą wersji

Następnie musisz otworzyć katalog obszaru roboczego w eksploratorze, wybrać projekt i rozwiązać go za pomocą Tortoise (Projekt -> Menu kontekstowe -> TortoiseSVN -> Rozwiąż)

Zobaczysz następujące okno dialogowe z komunikatem: „ Lista plików jest pusta

Naciśnij anuluj i odśwież projekt w Eclipse. Twój projekt powinien znów być pod kontrolą wersji.

Niestety nie jest możliwe rozwiązanie więcej niż jednego projektu w tym samym czasie ... nie musisz niczego usuwać, ale w zależności od rozmiaru projektu może to być trochę pracochłonne.

Chisey88
źródło
0

Dla mnie robienie aktualizacji svn, a następnie zatwierdzanie svn działało. W folderze, którego nie można było dodać, nie było żadnych folderów .svn.

Sujeet
źródło