2010-08-02 8 views
40

La subversión manual indica «!»: '!'Cómo fijar la subversión en estado

Falta el elemento (por ejemplo, se movió o lo eliminó sin usar svn). Este también indica que un directorio es incompleto (un proceso de finalización o actualización fue interrumpido).

Pero como ocurre con frecuencia con Subversion, no hay ninguna indicación sobre cómo solucionar el problema.

Normalmente, utilizaría mi Fix_Subversion.command de confianza, pero esta vez es tronco y tardará una eternidad.

¿Existe alguna opción más rápida?

+1

¿movió o eliminó los artículos en cuestión? –

+0

Sí. vea abajo. – Martin

+0

@Martin: gracias por su guión, ¡me salvó el día! – Hraban

Respuesta

44
svn revert /path/to/file 
svn rm /path/to/file  # if you want to delete it from svn itself 

regla de oro es: una vez que algo está bajo el control de SVN, cualquier movimiento, eliminar, renombrar, se debe hacer con los comandos SVN (SVN mv, rm SVN, etc.), no se utiliza el sistema de archivos normales/Archivo- funciones del explorador

+0

Sí lo hice copiado y renombrado. Pero todo con los comandos svn yy con el compromiso svn después de cada cambio de alcalde. Pero aún así las cosas se estropearon. – Martin

+0

O bien _something_ did, o su implementación svn localmente o en el servidor está rota. – Wrikken

+0

Me pregunto si Eclipse arruinó las cosas. Hago la mayoría del trabajo relacionado con Subversion en la línea de comando. Con las excepciones del cambio de nombre del paquete y de la clase, lo que hago con reelaboración de Eclipse. Por supuesto, Eclipse tiene el complemento de Subversion necesario. – Martin

14

¿Qué ocurre después de ejecutar:

svn cleanup . 
svn update 
svn status 
+0

y si le preocupa la recurrencia de tiempo en otros directorios, agregue '--depth = files' a la actualización – Rup

+0

El resultado es: > svn cleanup. > Actualización SVN SVN : Informe '/ svnroot/uiq3/SVN/VCC/default!': No se pudo leer tamaño del fragmento: Conexión segura truncado (https://uiq3.svn.sourceforge.net) Does not verse bien. Creo que tengo que morder la bala y recrear todo el árbol de trabajo ... – Martin

0

¿Qué es exactamente lo que hace a la rama antes de recibir este error?

Si usted está teniendo problemas regulares con SVN, probablemente haciendo algo mal (por ejemplo, utilizando mv/rm en contraposición a svn mv/svn rm en la rama).

+0

Copié un proyecto para crear uno similar. Utilicé «svn copy» para hacerlo. Luego cometí el nuevo proyecto y comencé a realizar cambios. – Martin

+0

@Martin: Entonces * todo * lo que hizo fue: 'svn copy', * make changes *,' svn commit'? Si es así, ¿cuáles fueron los cambios? ¿Implican mover, agregar o eliminar archivos? – Zaz

+0

Después del compromiso comencé el trabajo "real". Refaccionamiento de paquetes, etc. Con el siguiente check-in comenzó el problema. Primero se requería una actualización (extraño para un proyecto de un solo hombre). Esa actualización falló y se fue cuesta abajo desde allí. Pero esta no era realmente la pregunta. Estoy acostumbrado a afligirme por Subversion y solo pregunté si hay una solución rápida. Supongo que no, así que revisé todo el árbol de nuevo, copié mis cambios y volví a comprometerme. – Martin

3

Intenté revertir la limpieza de & pero no solucionó mi problema. La solución que encontré es un poco dura pero funcionó:

  1. cambie el nombre de la carpeta anterior a new_folder.
  2. desde la cuestión principal a svn up carpeta_antigua
  3. copie de nuevo los archivos de la carpeta_nueva [evitando hacer frente a la carpeta .svn desde la carpeta_nueva].

eliminé la nueva_carpeta y de esta forma logré tener una carpeta vieja limpiada.

+2

que es exactamente lo que hace 'Fix_Subversion.command'. Pero estaba pidiendo una solución más rápida/mejor. Además: Puede que ya no funcione con Subversion 1.7 ya que Subversion 1.7 solo tiene una carpeta .svn para toda la copia de trabajo. – Martin

+1

Esto funcionó para mí, en 1.6. Tengo el "!" después de editar un archivo (no lo controló) y luego cambiar a una rama –

0

Si eliminó un archivo y está marcado con !, simplemente ejecute svn rm --force <filename> para indicarle a SVN que elimine también el archivo del repositorio.

Cuestiones relacionadas