¿Cómo superar el error svn 'fuera de fecha'?

337

He estado intentando mover una estructura de directorio de una ubicación a otra en Subversion, pero aparece un Item '*' is out of dateerror de confirmación.

Tengo la última versión verificada (por lo que puedo decir). svn st -uno aparece ninguna diferencia aparte de los comandos mv.

Tim Visher
fuente
11
intentaste svn arriba?
Sklivvz
3
una solución trivial para evitar problemas es: si elimina una carpeta y contenido, primero elimine solo el contenido, svn, luego elimine la carpeta y luego svn nuevamente.
Fattie

Respuestas:

637

A veces me sale esto con TortoiseSVN en Windows. La solución para mí es svn updateel directorio, a pesar de que no hay revisiones para descargar o actualizar. Hace algo a los metadatos, que lo arregla mágicamente.

Miguel
fuente
44
Cambié la propiedad svn: ignore de una carpeta y comencé a obtener el error desactualizado. Pero como dijiste, solo actualizarlo funcionó.
Sushant
44
Cuando intento actualizar ese directorio, aparece "svn: dos informes de nivel superior sin objetivo". Una razón más para odiar a SVN. Con git, nunca tuve este tipo de problema estúpido con operaciones básicas como mover un directorio.
Dan Dascalescu
Tuve un error 'desactualizado' en mi carpeta principal al usar la GUI de versiones. Actualicé la carpeta principal y luego me comprometí sin errores.
milesmeow
1
Esto también fue causado por el cambio de svn: ignórame y svn update lo arregló. ¡Gracias!
Nathan Schwermann
8
En Subclipse use "Equipo -> Actualizar a CABEZA". Funciona bien conmigo
NeoRamza
42

Después de intentar todas las cosas obvias, y algunas de las otras sugerencias aquí, sin suerte alguna, una búsqueda en Google condujo a este enlace (el enlace ya no funciona) - Subversion dice: Su archivo o directorio probablemente esté desactualizado

En pocas palabras, el truco es ir al directorio .svn (en el directorio que contiene el archivo ofensivo) y eliminar el archivo "all-wcprops" .

Trabajó para mí cuando nada más lo hizo.

Tom Bushell
fuente
Eso lo hizo! ¡Gracias! ¿Alguien tiene alguna sugerencia sobre cómo sucede esto y cómo evitarlo en primer lugar?
Jesse Barnum
Trabajó para mi. Terminé teniendo que eliminar todos los archivos 'all-wcprops': buscar. -name all-wcprops -exec rm -rf {} \;
Peter Hough
Supongo que deberías poder resolver esto mediante herramientas y opciones de svn, sin eliminar archivos en la estructura
agosto
+1, esto es lo único que funcionó para mí. La otra solución no lo hizo.
Clayton Dukes
99
no funciona para mí, no hay all-wcpropsarchivos en el .svdirectorio
ulkas
39

Creo que este problema proviene del archivo .svn. Es incorrecto en el antiguo padre, el nuevo padre o el antiguo. Intentaría volver a tu punto de partida. Use una exportación para obtener una copia limpia de la carpeta. Mueva la copia limpia a la nueva ubicación y use agregar y eliminar para realizar el movimiento. Eso es hacer manualmente lo que hace SVN, pero podría funcionar.

Jim Deville
fuente
44
Subversion en realidad copia y luego elimina, lo cual es bastante diferente a eliminar allí y agregar aquí.
SnakE
37

Descubrí que esto funciona para mí:

svn update
svn resolved <dir>
svn commit
Per Löwgren
fuente
Trabajó para mí sin hacerlo svn updateantes, tuve un escenario en el que quería evitar la actualización. (así que solo
resolví
Esta ha sido la cura para mi situación, nada más funcionó. ¡Gracias!
texasdave
14

Intenté actualizar la copia local, y revertir el elemento en cuestión, y aún obtuve el error 'desactualizado'. Esto funcionó por alguna razón:

svn update --force /path/to/dir/or/file
Stu Thompson
fuente
11

Acabo de tener el mismo problema en varias carpetas y esto es lo que hice para confirmar:

1) En la perspectiva "Team Synchronize", haga clic derecho en la carpeta> Anular y actualizar
2) Eliminar la carpeta nuevamente
3) Comprometerse y ser feliz

Rafael Xavier
fuente
5

Gracias. Eso solo lo resolvió para mí. svn update --force / ruta al nombre del archivo /

Si su archivo reciente en el directorio local es el mismo, no hay avisos. Si el archivo es diferente, solicita tf, mf, etc ... si elige mf (el mío está lleno) se asegura que no se sobrescriba nada y que podría confirmarlo cuando lo haya hecho.

Jay CompuMatter

Arrendajo
fuente
5

Logré resolverlo presionando un botón de actualización

Alvin567
fuente
4

Como sugiere @ Alexander-Klyubin, haga el movimiento en el repositorio. También será mucho más rápido, especialmente si tiene una gran cantidad de datos para mover, porque no tendrá que transferir todos esos datos a través de la red nuevamente.

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

debería funcionar bien

Eón
fuente
Estaba teniendo este problema con una svn up; svn mvserie de comandos, y esto funcionó muy bien. Gracias.
DopeGhoti
3

Elimine su archivo o su ruta utilizando antes de ejecutar el comando haga una copia de sus cambios

sudo rm -r /path/to/dir/

después :

svn up and commit or delete 
Clamoroso
fuente
2

¿Estás seguro de que has revisado la cabeza y no una revisión inferior? Además, ¿ha realizado una actualización para asegurarse de tener la última versión?

Hay una discusión sobre esto en http://svn.haxx.se/users/archive-2007-01/0170.shtml .

jgreep
fuente
Digamos que quieres registrar una copia vieja? ¿Cuál es entonces la forma más fácil de hacer que el registro funcione?
OJW
Si está hablando de volver a una copia anterior, simplemente instálela como de costumbre. Obtendrá un nuevo número de revisión.
jgreep
2

Realice el movimiento directamente en el repositorio.

Alejandro
fuente
2

Existe al menos otra causa del mensaje de error "desactualizado". En mi caso, el problema era .svn / dir-props que se creó ejecutando "svn propset svn: ignore -F .gitignore". por primera vez. Eliminar .svn / dir-props parece una mala idea y puede causar otros errores, por lo que puede ser mejor usar "svn propdel" para limpiar el errante "svn propset".

# 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
fuente
2

Si está utilizando el puente github svn, es probable que algo haya cambiado en el lado de github. La solución es simple, solo tiene que ejecutarla svn switch, lo que le permite encontrarse correctamente, luego actualizar y todo funcionará. Simplemente ejecute lo siguiente desde la raíz de su pago

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 de esta solución proviene del blog de Lee Preimesberger.

Perkins
fuente
1

¿Lo estás moviendo usando svn mv, o simplemente mv? Creo que usar solo mvpuede causar este problema.

Ryan Bigg
fuente
1

Moví el directorio a mi máquina local para guardarlo, luego svn eliminé el directorio estúpido y luego me comprometí. Cuando intenté agregar la carpeta desde mi máquina local, TODAVÍA arrojó el error (el movimiento SVN hizo lo mismo cuando intenté cambiar el nombre de la carpeta). Entonces volví, luego hice un DIRKAME de mkdir, agregué y me comprometí. Luego agregué los contenidos y me comprometí, y funcionó.

Toronjil
fuente
1
Evitaría cambiar el contenido del repositorio (svn delete), solo porque mi pago local está dañado de alguna manera.
Lars Noschinski
1

Recibí este error al azar después de eliminar algunos directorios, cada uno con algunos archivos. Eliminé los directorios a través de Netbeans y me di cuenta de que en realidad no los eliminó. Parecía simplemente eliminar todo dentro de los directorios y eliminar la referencia al directorio dentro de Netbeans. Sin embargo, todavía existían en el sistema de archivos. Asegúrese de que se eliminen del sistema de archivos e intente la confirmación nuevamente.

Cenador
fuente
1

Si alguna vez resolvió un problema similar, simplemente revisando una nueva copia de trabajo y reemplazando el directorio .svn arrojando los errores de confirmación con este recién revisado. La razón en mi caso fue que después de una corrupción y restauración del repositorio desde una copia de seguridad, la copia de trabajo apuntaba hacia una revisión que no existía en el repositorio restaurado. También obtuve errores de "elemento desactualizado". Actualizar la copia de trabajo antes de confirmar no resolvió esto, pero reemplazar el .svn como se describió anteriormente sí lo hizo.

archivo bajo el agua
fuente
1

Hice esto y funcionó para mí:
1. Haga una copia de seguridad de su archivo. Simplemente puede copiar su código a un archivo de texto.
2. Haga clic con el botón derecho en el archivo que desea confirmar >> Equipo >> Mostrar historial. 3. En el panel "Mostrar historial" verá todas las revisiones de ese archivo. Haga clic derecho en la última revisión del archivo >> Obtener revisión: anulará sus cambios locales.
4. Ahora, combine su código con el último archivo con el archivo de respaldo (paso # 1).
5. Sincronice y confirme el archivo recién fusionado.

Sameer Patel
fuente
1

Actualice su servidor y cliente a Subversion 1.9.

Si el out of date error ocurre aleatoriamente cuando normalmente no debería hacerlo, cuando ejecuta commit, puede indicar que está utilizando un cliente o servidor Subversion 1.7 obsoleto y no compatible o más antiguo.

Debe actualizar el servidor y los clientes para resolver el problema. Consulte la entrada correspondiente de las Notas de la versión de Subversion 1.9: Errores "desactualizados" cuando se confirma a través de HTTPv1 .

bahrep
fuente
1
Esto incluso me sucedió con TortoiseSVN 1.8.8 en Windows. La actualización a 1.9 ayudó.
Martin Pecka
1

El error se debe a que no actualizó ese archivo en particular, primero actualice y luego solo usted puede confirmar el archivo.

pantalón abhishek
fuente
1

Intenté todo menos cambiar en .svn directamente. Nada ayudó, así que aquí está mi solución.

En Eclipse> Ventana> Mostrar vista> Historial , he visto que el archivo no se encuentra en la revisión más reciente, aunque realicé varios svn "Anular y actualizar" / "Revertir" / eliminar archivo y finalizar la compra.

Así que fui Package Explorer> Haga clic derecho en el archivo> Reemplazar con> Último del repositorio .

Otra mirada en la Vista de historial mostró que el archivo ahora estaba en la última Revisión.

katana0815
fuente
1

"Clean Up" Te pondrá en camino.

Haga clic derecho en la carpeta svn y haga clic en 'Limpiar', haga esto si obtiene ese error.

Binara Medawatta
fuente
0

Esto sucedió cuando actualicé una rama de una versión anterior con archivos de la troncal. Utilicé el Explorador de Windows para copiar carpetas de mi carpeta de pago de troncal y las pegué en mi vista Eclipse de la carpeta de pago de la rama de lanzamiento. Ahora, el Explorador de Windows se configuró para no mostrar archivos "ocultos" que comienzan con ".", Por lo que no tenía en cuenta todos los archivos .svn incorrectos que se pegan en la carpeta de pago de la rama de lanzamiento. Doh!

Mi solución fue eliminar el proyecto Eclipse dañado, verificarlo nuevamente y luego copiar los nuevos archivos con más cuidado. También cambié Windows para mostrar archivos "ocultos".

Jim Ferrans
fuente
0

Recibí este error al intentar confirmar algunos archivos, solo que era un archivo / carpeta que no existía en mi copia de trabajo. REALMENTE no quería pasar por la molestia de mover los archivos y volver a verificar, al final, terminé editando el archivo .svn / entries y eliminé la referencia del directorio ofensivo.

Al W
fuente
0

En mi caso, solo la eliminación de la versión local y el nuevo pago de una copia nueva fue una solución.

Macilias
fuente
0

Acabo de recibir este error. Lo que le recomiendo es que primero verifique en su servidor si el archivo original está allí. A veces los cambios no se realizan en su carpeta local. Si esta es su situación, simplemente elimine su carpeta y vuelva a pagar.

brunch875
fuente
0

Para resolverlo, necesitaba revertir el archivo con un problema y actualizar mi copia de trabajo, y luego modifiqué el archivo nuevamente y después de estos pasos el error ya no ocurrió.

sandolkakos
fuente
0

Simplemente haga svn en la línea de comando o si está en Windows, seleccione la opción de actualización de svn.

  • Una vez hecho esto, esto le permitirá realizar más acciones como comprometerse y otros.
Usted es maravilloso
fuente
0

Acabo de recibir esto mientras intentaba commitdesde un trunkdirectorio. Hacer svn updatedesde el trunkdirectorio no resolvió el error; sin embargo, hacerlo svn updatedesde el directorio padre (donde .svnpertenece el directorio) resolvió el error.

Mi suposición acerca de lo que sucedió (un caso de uso entre otros, puede haber múltiples razones para este "svn: E160024: recurso desactualizado; intente actualizar"): junto con trunk, había un branchesdirectorio. Saqué una branches/branch-1a masterpartir de GitHub. Hacer svn updatedesde el directorio principal (es decir, la raíz de mi copia de trabajo) en lugar de trunkparece haber hecho algo branchesademás trunk. Cuando intentécommit nuevamente, no hubo error.

Sin embargo, como dije anteriormente, este es un caso entre probablemente muchos otros.

Nota al margen: a diferencia de lo que alguien sugirió, no creo que sea una buena idea jugar manualmente en el .svndirectorio.

Hibou57
fuente