Come si supera l'errore svn "obsoleto"?


337

Ho provato a spostare una struttura di directory da una posizione all'altra in Subversion, ma ricevo un Item '*' is out of dateerrore di commit.

Ho verificato la versione più recente (per quanto ne so). svn st -unon presenta differenze diverse dai comandi mv.


11
hai provato a svn up?
Sklivvz,

3
un banale evitatore di problemi è: se si elimina una cartella e contenuti, eliminare prima solo i contenuti, svn, quindi eliminare la cartella, quindi svn di nuovo.
Fattie,

Risposte:


637

A volte capisco questo con TortoiseSVN su Windows. La soluzione per me è svn updatela directory, anche se non ci sono revisioni da scaricare o aggiornare. Fa qualcosa ai metadati, che lo risolve magicamente.


4
Ho cambiato la proprietà svn: ignore di una cartella e ho iniziato a ricevere l'errore non aggiornato. Ma come hai detto, solo l'aggiornamento ha funzionato.
Sushant,

4
Quando provo ad aggiornare quella directory, ottengo "svn: due report di primo livello senza target" Un motivo in più per odiare SVN. Con git, non ho mai avuto questo tipo di stupido problema con operazioni di base come spostare una directory.
Dan Dascalescu il

Ho riscontrato un errore "non aggiornato" nella mia cartella principale utilizzando la GUI delle versioni. Ho aggiornato la cartella principale e quindi eseguito il commit senza errori.
miglia il

1
questo è stato causato anche cambiando svn: ignore per me e svn update lo ha riparato. Grazie!
Nathan Schwermann l'

8
In Subclipse usa "Team -> Aggiorna a HEAD". Funziona bene con me.
NeoRamza,

42

Dopo aver provato tutte le cose ovvie e alcuni degli altri suggerimenti qui, senza fortuna, una ricerca su Google ha portato a questo link (il link non funziona più) - Subversion dice: Il tuo file o directory è probabilmente obsoleto

In poche parole, il trucco è andare nella directory .svn (nella directory che contiene il file offensivo) ed eliminare il file "all-wcprops" .

Ha funzionato per me quando nient'altro ha fatto.


Questo è stato fatto! Grazie! Qualcuno ha qualche suggerimento su come ciò accada e su come evitarlo in primo luogo?
Jesse Barnum,

Ha funzionato per me. Ho finito per dover rimuovere tutti i file 'all-wcprops': find. -name all-wcprops -exec rm -rf {} \;
Peter Hough,

Immagino che dovresti essere in grado di risolverlo con gli strumenti e le opzioni svn, senza eliminare i file nella struttura
agosto

+1, questa è l'unica cosa che ha funzionato per me. L'altra soluzione no.
Clayton Dukes,

9
non funziona per me, non ci sono all-wcpropsfile all'interno della .svdirectory
ulkas,

39

Credo che questo problema provenga dal file .svn. È errato nel vecchio genitore, nel nuovo genitore o in quello vecchio. Proverei a tornare al tuo punto di partenza. Utilizzare un'esportazione per ottenere una copia pulita della cartella. Sposta la copia pulita nella nuova posizione e usa un aggiungi ed elimina per fare lo spostamento. Fa manualmente ciò che fa SVN, ma potrebbe funzionare.


4
Subversion in realtà copia e poi cancella, il che è piuttosto diverso dall'eliminazione lì e dall'aggiunta qui.
SnakE

37

Ho scoperto che questo funziona per me:

svn update
svn resolved <dir>
svn commit

Lavorato per me senza farlo svn updateprima, ho avuto uno scenario in cui volevo evitare l'aggiornamento. (quindi ho appena risolto e commesso e ha funzionato)
BornToCode

questa è stata la cura per la mia situazione, nient'altro ha funzionato. Grazie!
texasdave,

14

Ho cercato di aggiornare la copia locale, ripristinare l'elemento in questione e ancora l'errore "non aggiornato". Questo ha funzionato per qualche motivo:

svn update --force /path/to/dir/or/file

11

Ho avuto lo stesso problema in diverse cartelle e questo è quello che ho fatto per impegnarmi:

1) Nella prospettiva "Team Synchronize", fai clic con il pulsante destro del mouse sulla cartella> Sostituisci e aggiorna
2) Elimina di nuovo la cartella
3) Impegna e sii felice


5

Grazie. Questo mi ha appena risolto. svn update --force / percorso al nome file /

Se il tuo file recente nella directory locale è lo stesso, non ci sono prompt. Se il file è diverso, richiede tf, mf ecc ... chosing mf (mio pieno) assicura che non venga sovrascritto nulla e che al termine potrei eseguire il commit.

Jay CompuMatter


5

Riesco a risolverlo premendo un pulsante di aggiornamento


4

Come suggerisce @ Alexander-Klyubin, fai la mossa nel repository. Sarà anche molto più veloce, specialmente se hai una grande quantità di dati da spostare, perché non dovrai trasferire di nuovo tutti quei dati sulla rete.

svn mv https://username@server/svn/old/ https://username@server/svn/new/

dovrebbe funzionare bene


Stavo avendo questo problema con una svn up; svn mvserie di comandi, e questo ha funzionato bene. Grazie.
DopeGhoti,

3

Rimuovi il tuo file o il tuo percorso usando prima di eseguire il comando fai un bk delle tue modifiche

sudo rm -r /path/to/dir/

dopo :

svn up and commit or delete 

2

Sei sicuro di aver verificato la testa e non una revisione più bassa? Inoltre, hai fatto un aggiornamento per assicurarti di avere l'ultima versione?

C'è una discussione al riguardo http://svn.haxx.se/users/archive-2007-01/0170.shtml .


Diciamo che vuoi controllare una vecchia copia? Qual è quindi il modo più semplice per far funzionare il check-in?
GU

Se stai parlando di ripristinare una vecchia copia, fai il check-in come al solito. Otterrà un nuovo numero di revisione.
jgreep,


2

Esiste almeno un'altra causa dell'errore "non aggiornato" del messaggio. Nel mio caso il problema era .svn / dir-props che è stato creato eseguendo "svn propset svn: ignore -F .gitignore". per la prima volta. L'eliminazione di .svn / dir-props sembra una cattiva idea e può causare altri errori, quindi potrebbe essere meglio usare "svn propdel" per ripulire il "svn propset" errato.

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

2

Se stai usando github svn bridge, è probabile che qualcosa sia cambiato dal lato delle cose di github. La soluzione è semplice, devi solo eseguire svn switch, che consente di trovarsi correttamente, quindi aggiornare e tutto funzionerà. Basta eseguire quanto segue dalla radice del checkout

svn info | grep Relative 
svn switch path_from_previous_command
svn update

o

svn switch `svn info | grep Relative | sed 's_.*: __'`
svn update

La base di questa soluzione viene dal blog di Lee Preimesberger


1

Lo stai spostando usando svn mvo solo mv? Penso che l'utilizzo di Just mvpossa causare questo problema.


1

Ho spostato la directory sul mio computer locale per motivi di sicurezza, quindi svn ho eliminato la directory stupida, quindi ho eseguito il commit. Quando ho provato ad aggiungere la cartella dal mio computer locale, ANCORA ha generato l'errore (lo spostamento SVN ha fatto la stessa cosa quando ho provato a rinominare la cartella). Quindi sono tornato, poi ho fatto un mkdir DIRNAME, aggiunto e impegnato. Quindi ho aggiunto e inserito il contenuto e ha funzionato.


1
Eviterei di modificare il contenuto del repository (svn delete), solo perché il mio checkout locale è in qualche modo danneggiato.
Lars Noschinski,

1

Ho ricevuto casualmente questo errore dopo aver eliminato alcune directory ognuna contenente alcuni file. Ho cancellato le directory tramite Netbeans e mi sono reso conto che in realtà non li cancellava. Sembrava semplicemente cancellare tutto all'interno delle directory e rimuovere il riferimento alla directory all'interno di Netbeans. Esistevano comunque sul filesystem. Assicurati che vengano eliminati dal file system e riprova a eseguire il commit.


1

Se una volta risolto un problema simile, è sufficiente estrarre una nuova copia di lavoro e sostituire la directory .svn lanciando gli errori di commit con questo appena estratto. La ragione nel mio caso era che dopo un danneggiamento del repository e il ripristino da un backup la copia funzionante puntava verso una revisione che non esisteva nel repository ripristinato. Sono stati rilevati anche errori "oggetto scaduto". L'aggiornamento della copia di lavoro prima del commit non ha risolto questo problema, ma ha sostituito il .svn come descritto sopra.


1

Ho fatto questo e ha funzionato per me:
1. Fai un backup del tuo file. Puoi semplicemente copiare il tuo codice in un file di testo.
2. Fare clic con il pulsante destro del mouse sul file che si desidera eseguire il commit >> Team >> Mostra cronologia. 3. Nel pannello "Mostra cronologia" vedrai tutte le revisioni di quel file. Fare clic con il tasto destro sull'ultima revisione del file >> Ottieni revisione: sostituirà le modifiche locali.
4. Ora, unisci il tuo codice con l'ultimo file con il file di backup (passaggio # 1).
5. Sincronizzazione e commit del file appena unito.


1

Aggiorna il tuo server e client a Subversion 1.9.

Se la out of date errore si verifica in modo casuale quando normalmente non dovrebbe, quando si esegue il commit, potrebbe indicare che si sta utilizzando un client o un server Subversion 1.7 obsoleto e non supportato o precedente.

È necessario aggiornare il server e i client per risolvere il problema. Vedere la voce relativa alle Note di rilascio di Subversion 1.9: errori "Scaduti" durante il commit su HTTPv1 .


1
Questo mi è successo anche con TortoiseSVN 1.8.8 su Windows. Aggiornamento a 1.9 aiutato.
Martin Pecka,

1

L'errore è perché non hai aggiornato quel particolare file, prima aggiorna quindi solo tu puoi eseguire il commit del file.


1

Ho provato tutto ma cambia in .svn direttamente. Niente ha aiutato, quindi ecco la mia soluzione.

In Eclipse> Finestra> Mostra vista> Cronologia ho visto che il file non è alla revisione più recente, anche se ho creato più svn "Sostituisci e aggiorna" / "Ripristina" / elimina file e checkout.

Così sono andato Esplora pacchetti> Fai clic destro sul file> Sostituisci con> Ultime dal repository .

Un altro sguardo nella Visualizzazione cronologia ha mostrato che il file era ora sull'ultima revisione.


1

"Clean Up" Ti porterà in pista.

Fare clic con il tasto destro sulla cartella svn e fare clic su "Pulisci", fare questo se si ottiene quell'errore.


0

Questo è successo quando ho aggiornato un ramo di una versione precedente con i file dal trunk. Ho usato Esplora risorse per copiare le cartelle dalla mia cartella di verifica del bagagliaio e le ho incollate nella mia vista Eclipse della cartella di verifica del ramo di rilascio. Ora Windows Explorer era configurato per non mostrare i file "nascosti" che iniziano con ".", Quindi ero ignaro di tutti i file .svn errati che venivano incollati nella mia cartella di verifica del ramo di rilascio. Doh!

La mia soluzione era quella di spazzare via il progetto Eclipse danneggiato, controllarlo di nuovo e quindi copiare i nuovi file in modo più accurato. Ho anche cambiato Windows per mostrare i file "nascosti".


0

ho riscontrato questo errore durante il tentativo di eseguire il commit di alcuni file, solo che era un file / cartella che non esisteva nella mia copia di lavoro. Davvero non volevo passare attraverso la seccatura di spostare i file e ricontrollare, alla fine, ho finito per modificare il file .svn / entry e rimosso il riferimento alla directory offensiva.


0

Nel mio caso, solo la cancellazione della versione locale e il checkout della nuova copia erano una soluzione.


0

Ho appena ricevuto questo errore. Quello che consiglio è di controllare prima sul tuo server se il file originale è lì. A volte le modifiche non vengono apportate nella cartella locale. Se questa è la tua situazione, basta eliminare la cartella e ricontrollare.


0

Per risolvere, avevo bisogno di ripristinare il file con problemi e aggiornare la mia copia di lavoro, e successivamente ho modificato nuovamente il file e dopo questi passaggi l'errore non si è più verificato.


0

Basta svn su nella riga di comando o se ci si trova in Windows selezionare l'opzione di aggiornamento svn.

  • Fatto ciò, ciò ti consentirà di compiere ulteriori azioni come l'impegno e altri.

0

L'ho appena ricevuto mentre stavo provando commitda una trunkdirectory. Fare svn updatedalla trunkdirectory non ha risolto l'errore; tuttavia, facendo svn updatedalla directory principale (dove .svnappartiene la directory) ha risolto l'errore.

La mia ipotesi su ciò che è accaduto (un caso d'uso tra l'altro, potrebbe esserci più ragioni per questo "svn: E160024: risorsa non aggiornata; provare ad aggiornare"): insieme a trunk, c'era una branchesdirectory. Ho tirato una branches/branch-1in masterda GitHub. Fare svn updatedalla directory principale (ovvero la radice della mia copia di lavoro) invece di trunkaver fatto qualcosa branchesin aggiunta a trunk. Quando ci ho provatocommit nuovo, non si è verificato alcun errore.

Tuttavia, come ho detto sopra, questo è un caso probabilmente tra molti altri.

Nota a margine: a differenza di quanto suggerito da qualcuno, non credo sia una buona idea giocare manualmente nella .svndirectory.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.