Metoda SVN 405 niedozwolona

122

Przypadkowo usunąłem folder w SVN i natychmiast dodałem go z powrotem. Wystąpił problem z tym i moje rozwiązanie zakończyło się całkowitym usunięciem folderu z mojej kopii lokalnej, a także kopii serwera. Mogę bez problemu aktualizować i zatwierdzać każdy inny plik lub folder, ale jeśli spróbuję utworzyć folder o tej samej nazwie, dodać i zatwierdzić, pojawia się następujący błąd:

svn: serwer wysłał nieoczekiwaną wartość zwracaną (metoda 405 niedozwolona) w odpowiedzi na żądanie MKCOL dotyczące „/ svn / www /! svn / wrk / 9de0d765-2203-456c-af16-58e792ec7ac0 / trunk / htdocs / solutions / medical”

Przeprowadziłem niezliczone porządki, zatwierdzenia, aktualizacje itp. Nic nie rozwiązuje problemu. Pomysły?

FYI, nie mam możliwości zmiany nazwy folderu najwyższego poziomu.

roadunknown
źródło
Próbowałem zrobić to samo, próbując usunąć podkatalog, aby móc go poprawnie zignorować. Jakoś to rozwiązało się samo i tak naprawdę nie wiem, jaka tajemnicza kombinacja elementów zbiegła się na to, więc odrzuciłem moje pytanie. Mój nowy to: dlaczego nie wszyscy używamy git?
icedwater

Odpowiedzi:

170

Domyślam się, że folder, który próbujesz dodać, już istnieje w SVN. Możesz potwierdzić, wypisując pliki w innym folderze i sprawdzić, czy łącze trunk ma już wymagany folder.

Sharjeel Aziz
źródło
1
Sprawdziłem to na innej wyewidencjonowanej wersji. Nie mogę określić, dlaczego moja kopia robocza nie została zaktualizowana.
Roadsunknown
1
Tak było również w tym przypadku, ale musiałem sprawdzić folder w oddzielnym folderze (a raczej zmieniłem jego nazwę na „foo” i svn up'd i odzyskałem go, w tym folder „usunięte”, pomimo mojego udanego zatwierdzenia usunięcia go.)
Kalle
1
@Shaji: Rozumiem twoją sprawę. Ale jak nadal mogę zostać popełniony z powodu tego błędu? Albo jest coś do zrobienia, proszę powiedz mi. Dzięki.
Huy Tower
1
Wykonaj aktualizację SVN w folderze, a następnie ponów próbę zatwierdzenia.
Alex R
To irytujący błąd. Sprawdziłem nowe repozytorium z Github i zatwierdziłem nowy folder. Zawsze pokazuje ten sam błąd. Wypróbowałem Twoje rozwiązanie, ale nie działa.
emeraldhieu
56

Najszybszym sposobem, aby to naprawić, było zduplikowanie folderu, którego dotyczy problem, i zatwierdzenie go pod inną nazwą. Wtedy svn mv duplicateFolder originalFolder. Całkiem proste.

Więc weź folder1 i utwórz folder1Copy:

svn delete folder1
svn add folder1Copy

Zatwierdź i zaktualizuj:

svn mv folder1Copy/ folder1/

Zatwierdź ponownie i to naprawione.

TuK
źródło
6
To działało świetnie i jest o wiele prostsze niż praca z drugą kopią roboczą.
Justin
Miejmy nadzieję, że commit & updatenie jest to dosłowny wiersz poleceń ... w Uniksie, który próbowałby robić oba równolegle.
LarsH
1
Wspaniały dobry panie, jeśli przyjedziesz do Sunnyvale i jakoś mnie znajdziesz, kupię ci kawę.
Michael Voznesensky
10

Mój folder „zniknął” to libraries/fof.

Gdybym go usunął, a następnie uruchomił aktualizację, nie pojawiłby się.

cd libaries
svn up

(nic się nie dzieje).

Ale aktualizacja z rzeczywistą nazwą:

svn update fof

załatwił sprawę i został zaktualizowany. Więc zdetonowałem moją kopię roboczą (ręcznie zarchiwizowaną przez tar) i ponownie uruchomiłem. Najłatwiejsze rozwiązanie.

Riccardo Zorn
źródło
Zgadzam się, to jest najłatwiejsze. Po prostu wykonaj „svn up [folder]” zamiast „svn up”.
Dimitris,
To rozwiązanie zadziałało dla mnie. Dziękuję Ci.
Miguel Rentes
4

Właśnie to naprawiłem w moim własnym repozytorium. Używam TortoiseSVN w systemie Windows, więc nie jestem pewien, jakie dokładnie polecenia to tłumaczy w wierszu poleceń, ale oto, co zrobiłem:

Zostaje wywołany problematyczny folder libi miał zostać dodany.

  • Najpierw cofnąłem dodatek, aby SVN nie zwracał już na to uwagi.
  • Następnie zmieniłem jego nazwę ( libsnie to, że ma to znaczenie) za pomocą menu kontekstowego systemu Windows, dodałem i zatwierdziłem pomyślnie.
  • W końcu zmieniłem nazwę z powrotem na libużywanie menu kontekstowego TortoiseSVN (jest to prawdopodobnie ważne) i ponownie zatwierdziłem.
andronikus
źródło
3

Właśnie z tym problemem spotkałem się teraz i rozwiązałem go w ten sposób. Więc nagrałem to tutaj i chciałbym, żeby było przydatne dla innych.

Scenariusz:

  1. Zanim zatwierdzę kod, wersja: 100
  2. (Ktoś inny zatwierdza kod ... wersja zwiększona do 199)
  3. (Zapomniałem uruchomić "svn up") zatwierdzam kod, teraz moja wersja: 200
  4. Uruchamiam "svn up".

Wystąpił błąd.

Rozwiązanie:

  1. $ mv current_copy copy_back # Zmień nazwę bieżącej kopii kodu
  2. $ svn checkout current_copy # Sprawdź ponownie
  3. $ cp copy_back / current_copy # Przywróć swoje modyfikacje
Siwei Shen 申思维
źródło
3

Miałem podobny problem. Skończyło się na tym, że zrzuciłem go z orbity i straciłem historię SVN. Ale przynajmniej sprawiłem, że ten cholerny błąd zniknął.

Jest to prawdopodobnie nieoptymalna sekwencja poleceń do wykonania, ale powinna dość dokładnie odpowiadać sekwencji poleceń, które faktycznie wykonałem, aby wszystko działało:

cp -rp target ~/other/location/target-20111108
svn rm target --force
cp -rp ~/other/location/target-20111108 target-other-name
cd target-other-name
find . -name .svn -print | xargs rm -rf
cd ..
svn add target-other-name
svn ci -m "Re-re-re-re-re-re-re-re-re-re import target"
svn mv target-other-name target
svn ci -m "Re-re-re-re-re-re-re-re-re-re import target"
Brad Knowles
źródło
To jedyny sposób, aby mieć pewność.
TomDestry
1

Jeśli używasz code.google.comdo hostowania repozytorium Subversion.

Wiesz poniżej rzeczy, prawda?

If you plan to make changes, use this command to check out the code as yourself using HTTPS:

# Project members authenticate over HTTPS to allow committing changes.
svn checkout https://.../svn/trunk/ user-...

When prompted, enter your generated googlecode.com password.
Use this command to anonymously check out the latest project source code:

# Non-members may check out a read-only working copy anonymously over HTTP.
svn checkout http://.../svn/trunk/ ...-read-only

Błąd, o którym dokładnie wspomniałeś, używasz Non-members may check out a read-only working copy anonymously over HTTPstatusu. Dlatego do tej pory nie możesz nic popełnić ani zrobić.

Musisz użyć Project members authenticate over HTTPS to allow committing changesrzeczy.

Teraz będzie dobrze.

Huy Tower
źródło
0

Napotkałem ten sam problem i udało mi się go naprawić poprzez:

  1. Skopiuj folder w inne miejsce.
  2. Usuń .svn z skopiowanego folderu
  3. Kliknij prawym przyciskiem myszy oryginalny folder i wybierz „SVN Checkout”
  4. Jeśli nie możesz znaleźć (3), to Twoja sprawa jest inna niż moja.
  5. Sprawdź, czy katalog w REPO-BROWSER jest poprawny. W moim przypadku to była przyczyna.
  6. Sprawdzić
  7. Przywróć pliki ze skopiowanego folderu do oryginalnego katalogu.
  8. Popełnić.
awan.soekamto
źródło
0

Oznacza to, że folder / plik, który próbujesz umieścić na svn, już tam istnieje. Moja rada jest taka, że ​​zanim cokolwiek zrobisz, kliknij prawym przyciskiem myszy folder / plik i kliknij przeglądarkę repo. W ten sposób będziesz mógł zobaczyć wszystkie pliki / podfoldery itp., Które są już obecne na svn. Jeśli wymagany plik / folder nie jest obecny na svn, po prostu usuń (po wykonaniu kopii zapasowej) plik, który chcesz dodać, a następnie uruchom aktualizację.

Kaveesh Kanwal
źródło
0

Aktualnie dodany katalog jest już zatwierdzony w repozytorium. Więc usuń katalog w repozytorium i ponownie zatwierdź ten sam katalog.

saravanabawa
źródło
0

Otrzymałem ten błąd, ponieważ zamieniłem adres URL na nowy kończący się na „/”. Znaczy rekord w wc.db bazy danych w .svn folderu w repozytorium tabeli.

Po usunięciu znaku: „/” błąd zniknął.

Bronek
źródło