tutorial - ¿Hay alguna manera de desactivar TortoiseSVN usando svn: mergeinfo off?
tortoisesvn windows 10 (10)
Cuando realizo una combinación de TortoiseSVN, incluye un grupo de directorios y algunos archivos en los archivos modificados, aunque no hay cambios reales.
Cambia la propiedad svn:mergeinfo
.
¿Hay alguna razón por la cual estas propiedades establecidas en el directorio / archivos son necesarias? ¿Hay alguna forma de evitar estos cambios en svn:mergeinfo
?
Usualmente solo cambio los ítems y luego los comprometo, pero esto desperdicia tiempo extra.
SVN 1.7 y posterior
Esto debería arreglarse en SVN 1.7. De las notas de la versión :
Las fusiones ya no registran mergeinfo (que describe la combinación) en los subárboles (que tienen su propia mergeinfo explícita), si el subárbol no se vio afectado por la fusión. Esto debería reducir en gran medida el número de cambios de propiedad de
svn:mergeinfo
espurios para los usuarios que tienen un gran número de subárboles con mergeinfo explícito.
SVN antes de 1.7
Lo que sucede es que una vez que un archivo / carpeta tiene mergeinfo explícito, cada combinación posterior a la rama actualizará ese mergeinfo incluso si el archivo / carpeta no está relacionado. Esto es molesto ya que introduce más y más desorden en la lista de cambios para cada combinación.
Para evitar esto, solo fusione a la carpeta "raíz" de la rama, por ejemplo "/branches/maintenance2.x". Ninguno de los archivos o carpetas debajo de "/branches/maintenance2.x" debería obtener mergeinfo. Sigue los consejos de fusión en el libro de SVN .
Desafortunadamente, incluso si se fusiona solo en la carpeta "raíz" de la rama, las propiedades vacías de svn:mergeinfo
aún pueden aparecer en archivos y carpetas individuales cuando se copian, para indicar que no han recibido las mismas fusiones que sus hermanos.
Probablemente sea seguro eliminar el subárbol superfluo mergeinfo. Una forma de hacerlo es haciendo una eliminación recursiva de la propiedad svn:mergeinfo
en cada archivo y carpeta en la raíz del proyecto. (¡Pero mantenga mergeinfo en la carpeta raíz misma!)
Alternativamente, puede actualizar a Subversion 1.6 . He verificado que soluciona este problema. Incluso parece eliminar el mergeinfo superfluo agregado por versiones anteriores para usted.
A juzgar por los comentarios, todavía hay casos en SVN 1.6 donde aparece el mergeinfo de sub-árbol superfluo. Pero no he podido reproducir eso.
¡Gran pregunta y respuesta! Hemos estado teniendo este problema últimamente, porque estamos tratando de evitar las limitaciones de nuestro sistema de compilación automatizado. Nuestro sistema de compilación auto incrementa el .bdsproj y algunos de los archivos .dpr / .dpk con información de versión y ruta.
Quiero cambiar eso ... pero en este momento, si desea fusionar una rama con otra, obtendrá el puñado de archivos que ha cambiado y luego 1000 archivos que la máquina de compilación ha cambiado. Así que hemos estado haciendo fusiones "dirigidas", a veces un archivo a la vez. Especialmente con los archivos .dpr o .bdsproj que tienen cambios legítimos (como la inclusión de una unidad adicional). Ahora sé lo que está pasando, así que espero poder detener la locura.
Gracias !
Añadiría que al menos una parte de este error se corrigió en Subversion 1.5.5. Desde el archivo 1.5.5 CHANGES :
do not create mergeinfo for wc-wc moves or copies (r34184, -585)
Es decir, había un error en SVN anterior a 1.5 en el que crearía entradas de mergeinfo que no usaba, y eran superfluas, y esto es probablemente lo que el svn:mergeinfo
la pregunta original estaba teniendo si tenían muchas propiedades de svn:mergeinfo
.
El comando dado en la pregunta de desbordamiento de pila elimina las propiedades de svn innecesarias: mergeinfo eliminará cualquier información de merge adicional.
Eso está sucediendo, muy probablemente, porque esos archivos y directorios tienen la propiedad svn: mergeinfo configurada a partir de una fusión previa. No creo que sea una buena idea fusionar archivos o directorios individuales de forma tal que Mergeinfo se escriba en archivos individuales. Debe adquirir el hábito de fusionarse al máximo nivel posible para su flujo de trabajo, de modo que la propiedad mergeinfo solo se establezca en directorios estructurales, como / trunk o /branches/1.0.
Sin embargo, si se encuentra con propiedades mergeinfo en archivos y carpetas individuales, hay dos cosas que puede hacer: lo primero es simplemente eliminar la propiedad svn: mergeinfo de los archivos y directorios en cuestión. No estoy seguro de que esto se recomiende a menos que realmente sepas lo que estás haciendo y cuáles podrían ser los efectos. ¡Lea la documentación antes de hacer esto!
Lo segundo que puede hacer es confirmar que la propiedad cambia de la manera en que SVN lo quiere, lo cual, si confía en el software, probablemente sea lo correcto.
Habiendo dicho eso, he estado trabajando con mis compañeros de equipo para tener los hábitos correctos para que no tengamos más molestias.
Lo eliminamos recursivamente en nuestro proyecto porque casi todos los archivos tenían esta información, lo que hacía que la fusión fuera muy molesta (si solo se había alterado un archivo, todos los archivos tenían que fusionarse). A partir de ahora, solo nos uniremos a la raíz, lo que debería evitar esta situación en el futuro.
No nos ha dado ningún problema hasta el momento. El registro aún está disponible en los archivos y parece ser el mismo (¡pero hágalo bajo su propio riesgo de todos modos!).
Oh, lo hicimos en nuestro baúl, justo antes de hacer una nueva rama. De esta manera, podemos comenzar desde cero.
Si marca Ignorar ascendencia , no creará svn mergeinfo en las carpetas. Si ya obtuviste la información de combinación de svn, solo invártela y realice la fusión nuevamente marcando ignorar el ancestro.
Si realiza sus fusiones con la opción --ignore-ancestry, las propiedades mergeinfo no se crearán en primer lugar.
svn merge --ignore-ancestry -c 1234 svn://sourcecontrol .
También tuvimos este problema en mi equipo, e hizo que todo el proceso de fusión fuera un poco confuso. Después de leer esto, traté de eliminar la propiedad svn: mergeinfo de una serie de archivos, y después de algunas pruebas más, parece que eso resolvió el problema.
svn: mergeinfo es la propiedad que Subversion usa para rastrear el historial de fusiones . Simplemente dejaría que hiciera lo que tiene que hacer ... es posible que necesites fusionar el seguimiento del historial más tarde y descubras que no funciona porque no has confirmado esas propiedades.