Jak przezwyciężyć błąd svn „nieaktualny”?

336

Próbowałem przenieść strukturę katalogów z jednej lokalizacji do innej w Subversion, ale dostaję Item '*' is out of datebłąd zatwierdzenia.

Mam najnowszą wersję sprawdzoną (o ile wiem). svn st -unie ujawnia żadnych różnic oprócz poleceń mv.

Tim Visher
źródło
11
próbowałeś svn?
Sklivvz
3
trywialnym unikaczem problemów jest: jeśli usuwasz folder i zawartość, najpierw najpierw usuń tylko zawartość, svn, następnie usuń folder, a następnie svn ponownie.
Fattie

Odpowiedzi:

636

Czasami otrzymuję to z TortoiseSVN w systemie Windows. Rozwiązaniem jest dla mnie svn updatekatalog, mimo że nie ma żadnych poprawek do pobrania ani aktualizacji. Robi coś z metadanymi, co magicznie to naprawia.

Michał
źródło
4
Zmieniłem właściwość svn: ignore folderu i zacząłem uzyskiwać błąd nieaktualności. Ale jak powiedziałeś, po prostu aktualizacja działała.
Sushant,
4
Gdy próbuję zaktualizować ten katalog, pojawia się komunikat „svn: Dwa raporty najwyższego poziomu bez celu”. Jeszcze jeden powód, by nienawidzić SVN. Z gitem nigdy nie miałem tego rodzaju głupiego problemu z podstawowymi operacjami, takimi jak przenoszenie katalogu.
Dan Dascalescu
Wystąpił błąd „nieaktualny” w folderze nadrzędnym przy użyciu graficznego interfejsu użytkownika wersji. Zaktualizowałem folder nadrzędny, a następnie zatwierdziłem bez błędów.
milesmeow
1
było to również spowodowane zmianą svn: ignore dla mnie i aktualizacja svn to naprawiła. dzięki!
Nathan Schwermann,
8
W Subclipse użyj „Team -> Update to HEAD”. Działa ze mną dobrze.
NeoRamza
42

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.

Tom Bushell
źródło
To zrobiło! Dzięki! Czy ktoś ma jakieś sugestie, jak to się dzieje i jak tego uniknąć?
Jesse Barnum
Pracował dla mnie. Skończyło się na tym, że musiałem usunąć wszystkie pliki „all-wcprops”: find. -name all-wcprops -exec rm -rf {} \;
Peter Hough
Myślę, że powinieneś być w stanie rozwiązać ten problem za pomocą narzędzi i opcji svn, bez usuwania plików w strukturze
sierpień
+1, to jedyna rzecz, która działała dla mnie. Inne rozwiązanie nie.
Clayton Dukes,
9
nie działa dla mnie, nie ma żadnych all-wcpropsplików w .svkatalogu
ulkas
39

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ć.

Jim Deville
źródło
4
Subversion faktycznie kopiuje, a następnie usuwa, co różni się raczej od usuwania i dodawania tutaj.
SnakE,
37

Przekonałem się, że to działa dla mnie:

svn update
svn resolved <dir>
svn commit
Per Löwgren
źródło
Pracowałem dla mnie svn updatewcześ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)
BornToCode
to jest lekarstwo na moją sytuację, nic więcej nie działało. dzięki!
texasdave
14

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
Stu Thompson
źródło
11

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

Rafael Xavier
źródło
5

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

Sójka
źródło
5

Udaje mi się to rozwiązać, naciskając przycisk aktualizacji

Alvin567
źródło
4

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

Eon
źródło
Miałem ten problem z svn up; svn mvserią komend i to załatwiło sprawę. Dziękuję Ci.
DopeGhoti
3

Usuń plik lub ścieżkę, używając przed wykonaniem polecenia, wykonaj większość zmian

sudo rm -r /path/to/dir/

po :

svn up and commit or delete 
Cudowne
źródło
2

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 .

jgreep
źródło
Powiedzmy, że chcesz sprawdzić stary egzemplarz? Jaki jest zatem najłatwiejszy sposób, aby zameldowanie działało?
OJW
Jeśli mówisz o przywróceniu starej kopii, po prostu zgłoś ją jak zwykle. Otrzyma nowy numer wersji.
jgreep
2

Wykonaj przeniesienie bezpośrednio w repozytorium.

Alexander
źródło
2

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.
infogizmo
źródło
2

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

Perkins
źródło
1

Przenosisz go za pomocą svn mv, czy po prostu mv? Myślę, że używanie just mvmoże powodować ten problem.

Ryan Bigg
źródło
1

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.

Melisa
źródło
1
Unikałbym zmiany zawartości repozytorium (svn delete), tylko dlatego, że moja lokalna kasa jest w jakiś sposób uszkodzona.
Lars Noschinski,
1

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ć.

Altana
źródło
1

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.

plikunderwater
źródło
1

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.

Sameer Patel
źródło
1

Zaktualizuj serwer i klienta do Subversion 1.9.

Jeśli out of datebłą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 .

bahrep
źródło
1
Zdarzyło mi się to nawet z TortoiseSVN 1.8.8 w systemie Windows. Pomogła aktualizacja do wersji 1.9.
Martin Pecka,
1

Błąd wynika z tego, że nie zaktualizowałeś tego konkretnego pliku, najpierw zaktualizuj, a potem tylko Ty możesz zatwierdzić plik.

spodnie abhishek
źródło
1

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.

katana0815
źródło
1

„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.

Binara Medawatta
źródło
0

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.

Jim Ferrans
źródło
0

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.

Al W.
źródło
0

W moim przypadku rozwiązaniem było jedynie usunięcie wersji lokalnej i ponowne pobranie nowej kopii.

Macilias
źródło
0

Właśnie dostałem ten błąd. Polecam najpierw sprawdzić na serwerze, czy jest tam oryginalny plik. Czasami zmiany nie są wprowadzane w folderze lokalnym. Jeśli taka jest Twoja sytuacja, po prostu usuń folder i ponownie dokonaj płatności.

brunch875
źródło
0

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ł.

sandolkakos
źródło
0

Po prostu zrób svn w linii poleceń lub jeśli jesteś w systemie Windows wybierz opcję aktualizacji svn.

  • Gdy to zrobisz, pozwoli to na podjęcie dalszych działań, takich jak zatwierdzanie i inne.
Jesteś niesamowity
źródło
0

Właśnie to dostałem, kiedy próbowałem commitz trunkkatalogu. Wykonanie svn updatez trunkkatalogu nie rozwiązało błędu; jednak wykonanie svn updatez katalogu nadrzędnego (do którego .svnnależ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 trunkbył brancheskatalog. I wyciągnął branches/branch-1INTO masterz GitHub. Robienie svn updatez katalogu nadrzędnego (to znaczy z katalogu głównego mojej kopii roboczej) zamiast trunkwydaje się, że zrobił coś branchesoprócz trunk. Kiedy spróbowałem commitponownie, 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 .svnkatalogu.

Hibou57
źródło