¿Cómo funciona el compromiso no recursivo de Tortoise?

110

He revisado una copia de la rama SVN (mi rama) localmente a la que me he fusionado desde una rama diferente (que tiene una estructura de carpetas completamente diferente). Entonces, básicamente, hay muchas eliminaciones (de archivos antiguos) y adiciones (de archivos nuevos).

Cuando intento enviar la fusión al repositorio (a mi rama), Tortoise dice

Esta confirmación no es recursiva y hay carpetas movidas / renombradas seleccionadas para la confirmación. Tales movimientos / cambios de nombre siempre se realizan de forma recursiva en el repositorio. ¿Quieres comprometerte de todos modos?

¿Está bien continuar con este compromiso? Si no es así, ¿qué debo hacer para que no haya problemas?

Además, para algunos archivos que agregué, hice cambios después de agregarlos (si esto afecta la naturaleza).

usuario1447725
fuente

Respuestas:

129

Encontrado por Google cómo solucionarlo: presione F5 en la ventana de confirmación (no en la "ventana emergente de advertencia")

Consulte http://tortoisesvn.tigris.org/ds/viewMessage.do?dsForumId=757&dsMessageId=2831045 para obtener más detalles.

El 26.08.2011 22:39, Ryan J Ollos escribió:

Desde hace varios meses, veo que aparece el siguiente cuadro de diálogo al iniciar Commit. Ocurre con frecuencia cuando se intenta comprometer después de una fusión.

Sin embargo, lo que he notado últimamente es que si cancelo y luego actualizo manualmente la lista de archivos (F5), no vuelvo a ver el mensaje al iniciar la confirmación por segunda vez. El compromiso parece tener éxito bien y sin más problemas.

El diálogo de confirmación monitorea la copia de trabajo en un hilo de fondo para notificaciones de cambios. Estas notificaciones son enviadas por el sistema operativo en caso de que los archivos se modifiquen / muevan / renombren / ... Si se recibe dicha notificación, el cuadro de diálogo de confirmación primero realiza algunas comprobaciones para poder eliminar la mayoría de ellas. Si la notificación indica que un archivo que no está marcado y no visible en el cuadro de diálogo de confirmación ha cambiado de alguna manera, vuelve a la confirmación no recursiva. Eso es porque si, por ejemplo, tiene un archivo abierto en otro editor y guarda sus cambios mientras el diálogo de confirmación está abierto, entonces ese archivo también se confirmará aunque no lo haya verificado en el diálogo de confirmación (no aparece hasta que actualice el diálogo con F5).

Entonces, si ve ese cuadro de diálogo de advertencia con frecuencia, verifique si hay otra herramienta / aplicación en ejecución que modifique archivos en su copia de trabajo.

Y como notó: si presiona F5, esa 'bandera no recursiva' se restablece porque después de una actualización, vuelve a ver todos los archivos, incluso los que modificó después de iniciar el diálogo.

Stefan

ichaki5748
fuente
1
El vínculo en la respuesta parece estar muerto. Aquí hay uno válido del Internet Archive web.archive.org/web/20150306224932/http://…
buzz3791
1
Intenté presionar F5. El efecto es que ahora, la lista de archivos de diálogo de confirmación muestra la mayoría de mis archivos dos veces (con exactamente la misma ruta y nombre), y el mensaje de advertencia sigue apareciendo cuando intento confirmar.
OR Mapper
26

Tuve el mismo problema, pero lo resolví revirtiendo los cambios en los archivos que había marcado como 'ignorar al confirmar'

Una vez que revertí estos archivos, tortoisesvn pudo confirmar todos los demás archivos de la fusión

Kevin Brady
fuente
¿cuál es una razón real? ¿Por qué o cómo estos archivos están causando el problema?
Mannoj
5

¿Está bien si continúo con este compromiso?

No, su confirmación ignorará todos los cambios en WC-tree y reflejará solo los cambios a nivel de raíz (fusión rota).

Cometió un error al verificar inicialmente no recursivo. Puede intentar realizar una confirmación completa y correcta utilizando el --depth infinityparámetro en la CLI o encontrar este modificador en la GUI de TortoiseSVN.

svn commit --depth infinity . -m "Merge"
Tejón perezoso
fuente
1
"Cometió un error al realizar la comprobación inicial no recursiva". No, no necesariamente. Revisé mi WC de la misma manera que siempre lo hago, pero sigo teniendo este problema de repente. De hecho, este no parece ser el caso de ninguna de las soluciones alternativas a continuación.
Keith M
Esto es completamente falso. Recibo este mensaje de vez en cuando y revisé mi copia de trabajo de manera recursiva de la misma manera que siempre lo hice
1800 INFORMACIÓN
1

También para algunos archivos que agregué a SVN, hice cambios después de agregar (si esto afecta la naturaleza).

En mi caso, eso fue exactamente lo que causó que apareciera el mensaje, incluso yo desmarqué esos archivos para la confirmación.

Solución fea que solo funciona de forma segura si solo unos pocos archivos se ven afectados:

  1. Cree una copia de los archivos modificados
  2. Revertir los archivos modificados
  3. Confirmar la fusión / reintegración
  4. Copie los archivos modificados de nuevo al lugar original

Recordatorio para uno mismo: solo reintegra una rama si el objetivo (tronco) está limpio.

Thomas Weller
fuente
1

Parece que TortoiseSVN realiza algún tipo de verificación de validez antes de llamar a commit. Bien, pero el mensaje de error es poco claro.

Cuando enfrenté este problema, volví a usar la línea de comando svn para confirmar. La confirmación falló debido a que una de las carpetas no estaba actualizada. Después de actualizar solo esa carpeta, ejecuté "svn commit" una vez más y se procesó.

Editar: PD: antes de usar, pruebe esto, asegúrese de no tener ningún archivo marcado como "ignorar al confirmar". "Ignorar al confirmar" es específico de la tortuga y el compromiso SVN también elige estos cambios.

sgowd
fuente
1

Solo pensé en publicar esto porque funcionó para mí ...

La razón por la que esto sucedió es porque había cambiado parcialmente el nombre de uno de los nuevos proyectos que había creado y, por alguna razón, todos aparecían como "Faltantes" en la pantalla de confirmación.

Después de que eliminé el proyecto y la carpeta (que SVN había marcado) y lo volví a colocar como un nuevo proyecto, de repente, todos los "Faltantes" se convirtieron en "Agregados" y la confirmación funcionó bien sin advertirme de nada. .

¡Espero que esto ayude!

Danny Lager
fuente
1

Vi este problema y la causa fue que algunos archivos agregados no tenían el estado agregado sin razón aparente. Eran 'normales' a pesar de que la carpeta principal se mostró correctamente como 'agregada'. Revertí esos cambios "normales" y luego los volví a hacer manualmente. Esto hizo que cada elemento agregado apareciera dos veces en la lista de confirmaciones, pero resolvió el error y todo parece estar en orden ahora.

No tenía nada que ver con ignorar al confirmar como en otra respuesta, simplemente parecía un error en TortoiseSVN.

Chris
fuente
Por lo que puedo decir, TortoiseSVN no mueve archivos de forma recursiva. Mover una carpeta cambia el historial de la carpeta, pero no los archivos que contiene. Esto significa que para mover carpetas con TortoiseSVN, debe volver a crear la carpeta en el destino deseado, agregar la carpeta y luego mover el contenido de la carpeta original a la nueva. O simplemente use la línea de comando.
Bradley Singer
Creo que esto fue por una fusión, no un movimiento. A menos que sean operaciones similares, no las estoy siguiendo.
Chris
0

El problema podría ser que alguien elimine su mergeinfo o automáticamente, porque la información se movió hacia arriba en el árbol. Si va a fusionarlos nuevamente, funcionará por el momento. Pero todos los demás tendrán problemas con sus ramas no fusionadas. SVN perderá algo de código y fusionará el código ya enviado nuevamente.

Por lo tanto, revertir esos archivos y cambiarlos nuevamente podría funcionar, pero no solo debe confirmar los cambios.

Nicolas
fuente
0

Simplemente tuve el mismo problema. En lugar de seleccionar todos los archivos, hice clic en versionado y todo funcionó bien. En mi caso, la opción versionada seleccionó todos los archivos, así que todo está bien ahora.

Bruno Milanez
fuente
-4

No conozco una opción para tortoisesvn pero podrías usar la línea de comando

svn commit --non-recursive [folder]

Eso debería funcionar como a ti te gusta para trabajar saludos

señor amarillo
fuente
Otras respuestas dicen que esto no comprometerá lo que realmente desea comprometer.
Keith M