Cuando fusiono cosas en mi repositorio, Subversion quiere agregar / cambiar muchas svn:mergeinfo
propiedades a los archivos que no tienen ninguna relación con las cosas que quiero fusionar.
Se han hecho preguntas sobre este comportamiento antes aquí en Stack Overflow:
- Propiedades de SVN Mergeinfo en rutas que no sean la raíz de la copia de trabajo
- ¿Hay alguna manera de desactivar TortoiseSVN usando svn: mergeinfo?
Por lo que entiendo de los temas mencionados anteriormente, parece que muchos archivos en mi repositorio tienen svn:mergeinfo
propiedades explícitas sobre ellos, cuando no deberían. El consejo es reducir la cantidad y solo poner esas propiedades en archivos / carpetas relevantes.
Así que ahora mi pregunta: ¿cómo puedo eliminar fácilmente esas propiedades innecesarias? Estoy usando TortoiseSVN, pero soy reacio a verificar / corregir manualmente cientos de archivos. ¿Hay una manera más fácil de eliminar esas svn:mergeinfo
propiedades innecesarias ?
PD: no estoy buscando el código API C ++ SVN.
fuente
Aquí hay una manera de eliminar todas las propiedades del subárbol svn: mergeinfo. Ejecútelo dentro de la raíz de su repositorio:
Todo en una línea para copiar / pegar fácilmente:
Para obtener una vista previa de los archivos que esto afectará antes de ejecutarlo, cambie el último "propdel" a "propget" o elimine el último tubo de xargs por completo.
fuente
Como se menciona en este hilo :
fuente
Como no estoy seguro con la
svn:merge-info
eliminación ciega de propiedades, he implementado una herramienta para analizar la situación actual en una copia de trabajo y eliminar tantas revisiones de fusión como sea posible de las propiedades de información de fusión no raíz. Después de controles y controles humanos adicionales, se pueden confirmar los cambios en la copia de trabajo.Aquí está: svn-clean-mergeinfo
No dude en informar cualquier problema sobre su uso para mejorarlo.
Subversion 1.10 presenta una nueva herramienta dedicada a esa tarea:
svn-mergeinfo-normalizer
fuente
Sé que ha pasado un tiempo, pero me encontré con un problema similar. Estoy usando TortoiseSVN 1.6.7. Dio la casualidad de que la propiedad estaba en la raíz de mi copia de trabajo. Cuando vi las propiedades en la raíz e hice clic en Eliminar en svn: mergeinfo, me preguntó si quiero eliminarlo de forma recursiva. Esto eliminó todos mis svn: mergeinfo cockups.
fuente
Si está seguro de que desea eliminar en masa las propiedades de mergeinfo, puede usar el siguiente script BASH.
Obtiene una lista de archivos modificados, la filtra para fusionar solo los cambios de información, elimina todo menos la ruta del archivo real, convierte las rutas de uno por línea en una lista delimitada por espacios y las llamadas vuelven a esa lista.
fuente
--xml
indicador y un analizador XML; cualquier otra cosa puede cambiar entre versiones, ya que no se garantiza la compatibilidad con el formato de salida de texto.En lugar de simplemente borrar ciegamente las propiedades de mergeinfo, también es posible completar las fusiones "faltantes".
Copie la propiedad mergeinfo de la carpeta raíz y luego realice una fusión en la carpeta secundaria para la ruta relativa apropiada y exactamente la misma lista de revisión. (Puede, pero no es necesario, solo enumerar las diferencias entre esta lista y la que ya está en la carpeta secundaria).
Normalmente, esta fusión debería terminar cambiando solo las propiedades de mergeinfo, no los archivos reales. (Si termina cambiando archivos, entonces una de las fusiones anteriores debe haber sido solo una fusión parcial, lo que puede haberle causado problemas de todos modos).
Hacer esto debería terminar eliminando la propiedad mergeinfo para usted, una vez que haya logrado que ambos coincidan exactamente. También es posible que deba hacer lo contrario: fusionar en la raíz cualquier revisión de fusión que solo esté presente en la carpeta secundaria (nuevamente, puede simplemente pegar la lista completa y dejar que SVN resuelva las diferencias por usted).
fuente
Para hacer cambios en una estructura de directorio, esto sería (solo 'buscar' que no sea de DOS):
Al ejecutar un cliente 1.6.12 conectado a un servidor 1.5, tengo un problema similar; no es un subdirectorio en el proyecto que necesita su propia SVN: info de fusión, pero tener 121 entradas (incluyendo esos directorios por debajo de 5 ./var con "svn: ignore *") parece algo inadecuado. Por lo tanto, sería bueno tener un script (por ejemplo, Python) que sea capaz de eliminar la información de fusión obviamente superflua y contar sobre otras diferencias ...
fuente