2010-06-21 12 views
25

tengo una copia de trabajo SVN, que he tratado de revertir fusionar un par de revisiones recientes en. Cancelé la fusión antes de que se completara cuando cambié de opinión. Ahora mi copia de trabajo tiene un par de miles de "cambios" de actualizaciones a las propiedades relacionadas con la ascendencia en la mayoría de los archivos. Tengo alrededor de 10 archivos con cambios de código real mezclados en los que no quiero tener que separarlos a mano.Svn revertir todos los cambios en las propiedades

¿Hay alguna manera de revertir todos los cambios de propiedad sin afectar los cambios en el contenido?

Respuesta

9

Resulta que Tortoise SVN puede hacer esto muy bien. En el diálogo de confirmación puede ordenar los archivos "modificados" por "estado del texto" o "estado de las propiedades". Simplemente ordené el estado del texto y luego revertí todos los archivos "modificados" que tenían el "estado de texto" "normal".

+0

Esto funciona para revertir también (e imagino cualquier otro comando de Tortoise). ¡Gracias por el consejo! – sam

-3

Copiaría/haría una copia de seguridad de los 10 archivos con el código real en otro lugar, y solo svn revert -R todo el proyecto, y luego volveré a copiar los 10 archivos.

+2

¿Qué hay de más de 100 archivos? – Vanuan

16

Si utiliza la opción '--depth empty' invertirá los cambios solo en las rutas explícitamente especificadas en la línea de comando, de modo que si especifica todos los directorios que tienen cambios de propiedad pero NINGUNO de los archivos cuyo contenido le cambia querer guardar.

p. Ej. si usted tiene el directorio 'foo' con cambios de propiedades no deseadas, pero el 'bar' archivo dentro de 'foo', el siguiente debe conservar las modificaciones a 'bar', pero revertir los cambios de propiedad de 'foo'.

$svn revert --depth empty foo 
30
svn revert `svn status | grep '^ M' | sed 's/^ M \+//g'` 
+1

Esto funcionó para mí, aunque tuve que editar la línea para prefijar la llamada con 'svn' –

+1

Gracias Chris, olvidé reemplazar mi alias bash :) –

+2

Deberías usar '^ M' en vez de 'M'. Además, ¿qué pasa con archivos como 'MM' con cambios de texto relevantes pero cambios de propiedad para descartar? – calandoa

0

Puede enviar sus cambios y luego revertir los cambios de propiedad de esa revisión:

svn merge -c -REV -depth vacío

donde REV es la revisión en la que desea revertir la propiedad cambia

0

revertir todos los cambios de propiedad con PowerShell.

> @(svn status) -match '^ M' | ` 
>>> % { ($_ -split 'M\s+')[1] } | ` 
>>> % { svn revert --depth empty $_ } 

crédito a Jerome Jaglale y TheJuice al planteamiento general.

Nota el símbolo tilde ` indica una nueva línea.

Cuestiones relacionadas