2008-12-15 20 views
26

Estoy tirando de mi pelo en este caso.SVN - No es un error de copia de trabajo

Tengo un sitio que está controlado por versiones con Subversion. Yo uso aptana (eclipse, subclipse) para hacer el svn. He estado revisando y archivando archivos, actualizando etc. y todo está bien. Sin embargo, el sistema que hemos estado creando ha estado agregando sus propios archivos y carpetas.

Cuando intento confirmar esto, me dice <path> no es una copia de trabajo. Si trato de hacer una limpieza, entonces da el mismo error. Descubrí que puedo agregar manualmente cada archivo al control de versiones, pero esto arroja el mismo error. Hacer una actualización no ayuda, actualizar el espacio de trabajo tampoco sirve de nada. La limpieza parece morir después del error y luego el directorio está bloqueado.

Sé que se supone que debes agregar archivos usando SVN, pero ¿cómo diablos trabajas con los archivos generados? ¿Cómo puedo evitar este error "<folder> no es un directorio de copia de trabajo"? ¿Cómo hago para que Subversion simplemente mire los archivos y los agregue a su repositorio?

Respuesta

20

Si desea que los archivos generados se agreguen a SVN, use svn add para agregarlos de forma recursiva; esto se asegurará de que todos los directorios sean parte de la copia de trabajo, y todos los archivos y directorios se agreguen a SVN, y se cometido como parte de la próxima svn commit.

Sin embargo, los archivos y las carpetas que se generan con frecuencia no se deben agregar a SVN, ya que se generan desde los archivos de origen como parte de una compilación. En este caso, debe marcar con svn:ignore para que no formen parte de la copia de trabajo.

0

"No es una copia de trabajo" significa que uno de los lugares en los que el IDE está intentando ejecutar en svn no está controlada por svn en sí (como la adición de archivos en un subdirectorio no bajo svn). Yo diría que revisen sus rutas dentro del IDE.

11

El no un error de copia de trabajo significa que la carpeta actual no se ha inicializado correctamente por SVN.

para corregir el error simplemente cambiar el nombre de la carpeta actual y luego obtener una copia de trabajo adecuada del proyecto de SVN por hacer un pago y envío del proyecto.

El check-out creará una copia de trabajo configurada correctamente de ese proyecto.

26

Tuvimos este problema hoy cuando traté de agregar una carpeta "A" en la que no tenía permiso de escritura (por lo que no pude crear la carpeta A/.svn).

Ejecutando svn status me dio un "~" al lado de la carpeta A. Ejecutando svn cleanup dijo que el padre de A estaba bloqueado.

Lo que terminó trabajando era:

cp -r A A~ # backup, since A was not in the repo 
rm -rf A  # removed locked directory 
svn rm A  # remove A from pending commit 
mv ~A A  # restore backup 
svn add A  # re-add to pending commit 
svn cleanup # (had to cleanup several parent folders higher as well) 
+1

Este didn' t trabajo para mí en el primer intento. El segundo intento, agregué un svn commit después de svn rm, y eso pareció ser el truco. ¡Gracias por el consejo! +1. – jwismar

2

acabo encontró el error "no es una copia de trabajo" en mi, copia ejem, trabajando. Esto fue para un proyecto JDeveloper y resultó que la actualización de JDeveloper (11.1.1.2.0) que acababa de instalar incorporó una versión posterior de SVNKit que la que uso para el acceso SVN de línea de comando (jsvn). Así que JDeveloper había actualizado silenciosamente el formato de los archivos .svn, lo que significaba que el cliente de la línea de comandos no podía entenderlos. El centavo se cayó cuando jsvn se quejó de que faltaba un archivo ".svn/format" en el directorio de nivel superior de mi proyecto. Encontré montones de estos en subcarpetas, todos parecían idénticos y solo contenían el dígito "9". Así que copié uno en la carpeta de nivel superior y jsvn finalmente dio un mensaje apropiado: "svn: este cliente es demasiado viejo para trabajar con la copia de trabajo '.'; Obtenga un cliente de Subversion más nuevo". Una vez que identifiqué (a través de Google) e instalé el nivel de SVNKit del cliente compatible, el nuevo jsvn mejorado pudo reconocer que mi copia de trabajo ES de hecho una copia de trabajo. Moraleja de la historia: si obtiene este error y está usando diferentes clientes SVN en la misma máquina, el problema puede ser que no se sincronizaron.

1

Se metió en esto ahora usando TortoiseSVN limpiando algunos directorios muertos. Realicé una copia de seguridad de los archivos y luego utilicé el navegador de rep para eliminar el directorio defectuoso (que de todos modos ya había desaparecido). Luego la limpieza del proyecto funcionó y ahora puedo continuar con mis archivos actuales.

0

Como hago todas las tareas con herramientas visuales, no puedo decirle qué comandos deben ejecutarse.

Este es mi entorno, Windows XP. tortoiseSVN 1.6.7 con Subversion 1.6.9, Eclipse 3.5 con Subclipse 1.6.10. y el repositorio se gestiona con el servidor SVN visual en Windows.

  1. En servidor SVN visual que eliminado la carpeta que fue creada por la otra herramienta (este era el problema, al igual que Keltia dijo).
  2. En mi explorador de Windows, haga clic derecho sobre mi proyecto y con las opciones de tortuga SVN presione actualización. Con esta acción, la carpeta fue eliminada en mi copia de trabajo.
  3. Commited todos mis cambios.
  4. ejecutó la herramienta que crea la carpeta (otra vez).
  5. con tortuga SVN Marqué con agregar a la lista de ignorar.

Espero que esto ayude.

1

Por favor, intente descubrir dónde está el problema. ¿Es este el archivo .svn que falta o algo más? Recuerde que el archivo .svn se crea cuando finaliza su registro. y contiene la ruta del directorio correspondiente, nombres de código con un número único etiquetado a ellos. Ve a la ruta base de tu proyecto que crees que está marcada a la perfección. Crea un nuevo paquete temporal y agrega un código de Java de ejemplo en esa ruta. Agregue a la versión y trate de confirmar. Si recibe un mensaje de error diciendo que la carpeta está bloqueada (Intentando bloquear la carpeta ya bloqueada), vaya a la carpeta .svn y cambie el nombre del archivo de bloqueo. Intente de nuevo registrar y confirmar

Si funciona bien, ha terminado. Utilice el mismo directorio base y vuelva a registrar su código desde ese directorio hasta su nivel de carpeta después de eliminarlo.

0

en mi caso muevo el lugar del espacio de trabajo del eclipse a otro y ocurre un problema. Para resolver el problema, pago un proyecto de svn repo. Luego, en un proyecto antiguo, limpio todos los archivos svn. (búsqueda simple .svn y eliminar), luego copio el contenido al que acaba de salir, mis cambios se vuelven visibles y mi proyecto está actualizado. Este método se puede aplicar para otros errores molestos.Esperanza ayuda a alguien

0

favor move directorio actual en otro lugar, y ejecutar svn update de comandos, a continuación, reemplace el directorio con el directorio trasladado
si el uso tortoisteSVN, que antes de que se ejecute svn update, costará la limpieza de directorios raíz

Cuestiones relacionadas