Próbowałem przenieść strukturę katalogów z jednej lokalizacji do innej w Subversion, ale dostaję Item '*' is out of date
błąd zatwierdzenia.
Mam najnowszą wersję sprawdzoną (o ile wiem). svn st -u
nie ujawnia żadnych różnic oprócz poleceń mv.
Próbowałem przenieść strukturę katalogów z jednej lokalizacji do innej w Subversion, ale dostaję Item '*' is out of date
błąd zatwierdzenia.
Mam najnowszą wersję sprawdzoną (o ile wiem). svn st -u
nie ujawnia żadnych różnic oprócz poleceń mv.
Odpowiedzi:
Czasami otrzymuję to z TortoiseSVN w systemie Windows. Rozwiązaniem jest dla mnie svn update
katalog, mimo że nie ma żadnych poprawek do pobrania ani aktualizacji. Robi coś z metadanymi, co magicznie to naprawia.
Po wypróbowaniu wszystkich oczywistych rzeczy i kilku innych sugestii tutaj, bez powodzenia, wyszukiwanie Google doprowadziło do tego linku (link już nie działa) - Subversion mówi: Twój plik lub katalog jest prawdopodobnie nieaktualny
W skrócie, sztuczka polega na przejściu do katalogu .svn (w katalogu, który zawiera szkodliwy plik) i usunięciu pliku „all-wcprops” .
Pracował dla mnie, gdy nic innego nie działało.
all-wcprops
plików w .sv
katalogu
Myślę, że ten problem pochodzi z pliku .svn. Jest to niepoprawne u starego rodzica, nowego rodzica lub starego. Spróbuję wrócić do punktu początkowego. Użyj eksportu, aby uzyskać czystą kopię folderu. Przenieś czystą kopię do nowej lokalizacji, a następnie dodaj i usuń, aby wykonać przeniesienie. To ręcznie robi to, co robi SVN, ale może działać.
Przekonałem się, że to działa dla mnie:
svn update
svn resolved <dir>
svn commit
svn update
wcześniej, miałem scenariusz, w którym chciałem uniknąć aktualizacji. (więc właśnie rozwiązałem i zatwierdziłem i zadziałało)
Próbowałem zaktualizować lokalną kopię i cofnąć przedmiotowy problem, ale nadal pojawił się błąd „nieaktualny”. Działa to z jakiegoś powodu:
svn update --force /path/to/dir/or/file
Właśnie miałem ten sam problem w kilku folderach i właśnie to zrobiłem, aby zatwierdzić:
1) W perspektywie „Synchronizacja zespołu” kliknij folder prawym przyciskiem myszy> Zastąp i zaktualizuj
2) Usuń folder ponownie
3) Zatwierdź i bądź szczęśliwy
Dziękuję Ci. To właśnie dla mnie rozwiązało. aktualizacja svn --force / ścieżka do nazwy pliku /
Jeśli ostatni plik w katalogu lokalnym jest taki sam, nie ma monitów. Jeśli plik jest inny, monituje o tf, mf itp ... wybranie mf (moje pełne) gwarantuje, że nic nie zostanie nadpisane, a po zakończeniu mogę zatwierdzić.
Jay CompuMatter
Jak sugeruje @ Alexander-Klyubin, wykonaj ruch w repozytorium. Będzie to również znacznie szybsze, zwłaszcza jeśli masz dużą ilość danych do przeniesienia, ponieważ nie będziesz musiał ponownie przesyłać wszystkich tych danych przez sieć.
svn mv https://username@server/svn/old/ https://username@server/svn/new/
powinien działać dobrze
svn up; svn mv
serią komend i to załatwiło sprawę. Dziękuję Ci.
Czy na pewno sprawdziłeś wersję główną, a nie niższą wersję? Czy zrobiłeś także aktualizację, aby upewnić się, że masz najnowszą wersję?
Trwa dyskusja na ten temat http://svn.haxx.se/users/archive-2007-01/0170.shtml .
Istnieje co najmniej jedna inna przyczyna błędu komunikatu „nieaktualny”. W moim przypadku problemem był plik .svn / dir-props, który został utworzony przez uruchomienie polecenia „svn propset svn: ignore -F .gitignore”. po raz pierwszy. Usunięcie pliku .svn / dir-props wydaje się złym pomysłem i może powodować inne błędy, dlatego najlepiej jest użyć polecenia „svn propdel” w celu wyczyszczenia błędnego „zestawu svn”.
# Normal state, works fine.
> svn commit -m"bump"
Sending eac_cpf.xsl
Transmitting file data .
Committed revision 509.
# Set a property, but forget to commit.
> svn propset svn:ignore -F .gitignore .
property 'svn:ignore' set on '.'
# Edit a file. Should have committed before the edit.
> svn commit -m"bump"
Sending .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating
# Delete the property.
> svn propdel svn:ignore .
property 'svn:ignore' deleted from '.'.
# Now the commit works fine.
> svn commit -m"bump"
Sending eac_cpf.xsl
Transmitting file data .
Committed revision 510.
Jeśli używasz mostu svn github, jest to prawdopodobne, ponieważ coś zmieniło się po stronie github. Rozwiązanie jest proste, wystarczy uruchomić svn switch
, co pozwoli poprawnie się znaleźć, a następnie zaktualizować i wszystko będzie działać. Po prostu uruchom następujące polecenie z katalogu głównego kasy
svn info | grep Relative
svn switch path_from_previous_command
svn update
lub
svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update
Podstawa tego rozwiązania pochodzi z bloga Lee Preimesbergera
Przeniosłem katalog na moją maszynę lokalną dla bezpieczeństwa, potem svn usunąłem głupi katalog, a potem popełniłem. Kiedy próbowałem dodać folder z mojego komputera lokalnego, STILL zwrócił błąd (ruch SVN zrobił to samo, gdy próbowałem zmienić nazwę folderu). Więc cofnąłem, potem zrobiłem mkdir DIRNAME, dodałem i popełniłem. Potem dodałem zawartość i zatwierdziłem, i zadziałało.
Ten błąd losowo otrzymałem po usunięciu kilku katalogów zawierających pliki. Usunąłem katalogi przez Netbeans i zdałem sobie sprawę, że tak naprawdę ich nie usunąłem. Wydawało się, że po prostu usuwa wszystko z katalogów i usuwa odniesienie do katalogu w Netbeans. Wciąż jednak istniały w systemie plików. Upewnij się, że zostały usunięte z systemu plików i spróbuj ponownie zatwierdzić.
Jeśli raz rozwiązałeś podobny problem, po prostu sprawdzając nową kopię roboczą i zastępując katalog .svn, zgłaszając błędy zatwierdzenia tym nowo wypisanym. Powodem w moim przypadku było to, że po uszkodzeniu repozytorium i przywróceniu go z kopii zapasowej kopia robocza wskazywała na wersję, która nie istniała w przywróconym repozytorium. Wystąpiły również błędy „nieaktualny”. Aktualizacja kopii roboczej przed zatwierdzeniem nie rozwiązała tego, ale zastąpiła plik .svn w sposób opisany powyżej.
Zrobiłem to i zadziałało dla mnie:
1. Wykonaj kopię zapasową pliku. Możesz po prostu skopiować kod do pliku tekstowego.
2. Kliknij prawym przyciskiem myszy plik, który chcesz zatwierdzić >> Zespół >> Pokaż historię. 3. W panelu „Pokaż historię” zobaczysz wszystkie wersje tego pliku. Kliknij najnowszą wersję pliku prawym przyciskiem myszy >> Pobierz wersję: zastąpi ona lokalne zmiany.
4. Teraz połącz swój kod z najnowszym plikiem z plikiem kopii zapasowej (krok # 1).
5. Synchronizuj i zatwierdzaj nowo scalony plik.
Zaktualizuj serwer i klienta do Subversion 1.9.
Jeśli out of date
błąd pojawia się losowo, gdy normalnie nie powinien, po uruchomieniu zatwierdzenia może to oznaczać, że używasz nieaktualnego i nieobsługiwanego Subversion 1.7 lub starszego klienta lub serwera.
Należy zaktualizować serwer i klientów, aby rozwiązać problem. Zobacz odpowiedni wpis w Informacjach o wersji Subversion 1.9: Błędy „Nieaktualne” podczas zatwierdzania przez HTTPv1 .
Błąd wynika z tego, że nie zaktualizowałeś tego konkretnego pliku, najpierw zaktualizuj, a potem tylko Ty możesz zatwierdzić plik.
Próbowałem wszystkiego oprócz zmiany w .svn bezpośrednio. Nic nie pomogło, więc oto moje rozwiązanie.
W Eclipse> Okno> Pokaż widok> Historia Widziałem, że ten plik nie jest w najnowszej wersji, chociaż zrobiłem wiele svn „Zastąp i aktualizuj” / „Przywróć” / usuń plik i kasę.
Więc poszedłem Eksplorator pakietów> Kliknij prawym przyciskiem myszy plik> Zamień na> Najnowsze z repozytorium .
Inne spojrzenie w widoku historii pokazało, że plik był teraz w najnowszej wersji.
„Sprzątanie” Nastąpi poprawność działania.
Kliknij prawym przyciskiem myszy folder svn i kliknij „Oczyść”, zrób to, jeśli pojawi się ten błąd.
Stało się tak, gdy zaktualizowałem gałąź wcześniejszej wersji o pliki z pnia. Użyłem Eksploratora Windows, aby skopiować foldery z mojego folderu pobierania pnia i wkleiłem je w widoku Eclipse folderu pobierania gałęzi wydania. Teraz Eksplorator Windows został skonfigurowany tak, aby nie pokazywał „ukrytych” plików zaczynających się od „.”, Więc nie byłem świadomy wklejania wszystkich niepoprawnych plików .svn do mojego folderu pobierania gałęzi wydania. Doh!
Moim rozwiązaniem było zdmuchnięcie uszkodzonego projektu Eclipse, sprawdzenie go ponownie, a następnie skopiowanie nowych plików ostrożniej. Zmieniłem także system Windows, aby wyświetlać „ukryte” pliki.
dostałem ten błąd podczas próby zatwierdzenia niektórych plików, tylko że był to plik / folder, który nie istniał w mojej kopii roboczej. NAPRAWDĘ nie chciałem przechodzić przez kłopoty z przenoszeniem plików i ponownym sprawdzaniem, w końcu zakończyłem edycję pliku .svn / wpisy i usunąłem nieprzyzwoite odniesienie do katalogu.
Aby rozwiązać problem, musiałem przywrócić plik z problemem i zaktualizować kopię roboczą, a później ponownie zmodyfikowałem plik i po wykonaniu tych kroków błąd już się nie pojawiał.
Po prostu zrób svn w linii poleceń lub jeśli jesteś w systemie Windows wybierz opcję aktualizacji svn.
Właśnie to dostałem, kiedy próbowałem commit
z trunk
katalogu. Wykonanie svn update
z trunk
katalogu nie rozwiązało błędu; jednak wykonanie svn update
z katalogu nadrzędnego (do którego .svn
należy katalog) rozwiązało błąd.
Zgaduję, co się stało (między innymi przypadek użycia, może istnieć wiele przyczyn tego „svn: E160024: nieaktualny zasób; spróbuj zaktualizować”): obok trunk
był branches
katalog. I wyciągnął branches/branch-1
INTO master
z GitHub. Robienie svn update
z katalogu nadrzędnego (to znaczy z katalogu głównego mojej kopii roboczej) zamiast trunk
wydaje się, że zrobił coś branches
oprócz trunk
. Kiedy spróbowałem commit
ponownie, nie wystąpił błąd.
Jednak, jak powiedziałem powyżej, jest to jeden przypadek prawdopodobnie wielu innych.
Uwaga dodatkowa: w przeciwieństwie do tego, co ktoś sugerował, nie sądzę, że dobrym pomysłem jest grać ręcznie w .svn
katalogu.