¿Hay alguna forma de desactivar TortoiseSVN usando svn: mergeinfo?


Cuando estoy haciendo una fusión TortoiseSVN, incluye un montón 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 que estas propiedades establecidas en el directorio/files son necesarias? ¿Hay alguna manera de evitar hacer estos cambios a svn:mergeinfo?

Normalmente solo revierte los elementos y luego confirma, pero esto desperdicia tiempo extra.

Author: Peter Mortensen, 2009-03-07

10 answers

Eso está sucediendo, muy probablemente, porque esos archivos y directorios tienen la propiedad svn:mergeinfo establecida desde una fusión anterior. No creo que generalmente sea una buena idea combinar archivos o directorios individuales de una manera que haga que el mergeinfo se escriba en archivos individuales. Debe adquirir el hábito de fusionar al nivel más alto posible para su flujo de trabajo, de modo que la propiedad mergeinfo solo se establezca en directorios estructurales ,como / trunk o /ramas/1.0.

Sin embargo, si se encuentra con propiedades mergeinfo en archivos y carpetas individuales, hay dos cosas que puede hacer: la primera cosa es simplemente eliminar la propiedad svn:mergeinfo de los archivos y directorios en cuestión. No estoy seguro de que esto se recomienda a menos que realmente sepa lo que está 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 que SVN quiere usted a, que, si usted confía en el software, es probablemente lo correcto hacer.

Dicho esto, he estado trabajando con mis compañeros de equipo para tener los hábitos correctos para que no tengamos más esta molestia.

 42
Author: RibaldEddie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-07 20:34:25

SVN 1.7 y posteriores

Esto debería arreglarse en SVN 1.7. De las notas de la versión :

Las fusiones ya no registran mergeinfo (describiendo la fusión) en subárboles (que tienen su propio mergeinfo explícito), 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 falsos svn:mergeinfo 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 archivo/carpeta explícita la información de mezclado, cada la fusión posterior a la rama actualizará ese mergeinfo incluso si el 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 fusión.

Para evitar esto, solo combine a la carpeta "raíz" de la rama, por ejemplo "/sucursales / mantenimiento2.x". Ninguno de los archivos o carpetas a continuación "/sucursales / mantenimiento2.x" debe obtener la información de mezclado. Siga el consejo de fusión en el SVN book.

Desafortunadamente, incluso si se fusiona solo en la carpeta "raíz" de la rama, las propiedades vacías svn:mergeinfo todavía pueden aparecer en archivos individuales y carpetas cuando se copian, para indicar que no han recibido el lo mismo se fusiona con sus hermanos.

Probablemente sea seguro eliminar el superfluo subárbol mergeinfo. Una forma de hacerlo es mediante una eliminación recursiva de la propiedad svn:mergeinfo en cada archivo y carpeta en la raíz del proyecto. (Pero mantener la información de mezclado en la raíz ¡la carpeta misma!)

Alternativamente, puede actualizar a Subversion 1.6. He verificado que soluciona este problema. Incluso parece eliminar superfluo información de mezclado añadido por versiones anteriores para usted.

A juzgar por los comentarios todavía hay casos en SVN 1.6 donde aparece superfluo sub-árbol mergeinfo. Pero no he sido capaz de reproducir eso.

 38
Author: Wim Coenen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-03 08:05:49

Si realiza sus fusiones con la opción ignore ignore-ancestry, las propiedades mergeinfo no se crearán en primer lugar.

svn merge --ignore-ancestry -c 1234 svn://sourcecontrol .
 14
Author: Chase Seibert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-14 23:58:22

Si marca Ignorar ancestry no creará svn mergeinfo en las carpetas. Si ya tiene la información de la fusión svn, simplemente reviértala y vuelva a realizar la fusión marcando ignorar ancestry.

Introduzca la descripción de la imagen aquí

 5
Author: Shams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-03 08:17:39

Svn:mergeinfo es la propiedad que Subversion usa para rastrear el historial de fusiones. Sólo dejaría que hiciera lo que tuviera que hacer... es posible que necesite el seguimiento del historial de fusión más adelante y descubra que no funciona porque no confirmó esas propiedades.

 3
Author: Mauricio Scheffer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-03-07 20:34:21

Añadiría que al menos una parte de este error fue corregida 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 antes de la versión 1.5 en el que creaba entradas mergeinfo que no usaba, y que eran superfluas, y esto es probablemente lo que el interrogador original estaba golpeando si tenían muchas propiedades svn:mergeinfo.

 1
Author: Paul Wagland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-03 08:08:37

El comando dado en Stack Overflow question Eliminar svn innecesario: mergeinfo propiedades eliminará cualquier mergeinfo extra.

 1
Author: Rafa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:52:52

Lo eliminamos recursivamente en nuestro proyecto porque casi todos los archivos tenían esta información 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 fusionaremos en la raíz, lo que debería evitar esta situación en el futuro.

No nos ha dado ningún problema hasta ahora. El registro todavía está disponible en archivos y parece ser el mismo (¡pero hágalo bajo su propio riesgo de todos modos!).

Oh, lo hicimos en nuestro maletero, justo antes de hacer un nuevo Sucursal. De esta manera, podemos empezar de cero.

 0
Author: Peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-10-28 09:44:42

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, intenté eliminar la propiedad svn: mergeinfo de varios archivos, y después de algunas pruebas adicionales, parece que eso resolvió el problema.

 0
Author: Ivar Wedøe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-08-15 09:19:34

Gran pregunta y respuesta! Hemos estado teniendo este problema últimamente, porque estamos tratando de trabajar alrededor de las limitaciones de nuestro sistema de compilación automatizado. Nuestro sistema de construcción auto-incrementa el .bdsproj y algunos de los .dpr/.archivos dpk con información de versión y ruta.

Quiero cambiar eso... pero ahora mismo, si quieres fusionar una rama con otra, obtienes el puñado de archivos que cambiaste, y luego 1000 archivos que la máquina de compilación cambió. Así que hemos estado haciendo " dirigido" fusiona, a veces un archivo a la vez. Especialmente con .dpr or .archivos bdsproj que tienen cambios legítimos (como la inclusión de una unidad adicional). Ahora sé lo que está pasando, así que espero poder poner fin a la locura.

Gracias Stack Overflow!

 0
Author: Chris Thornton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-03 08:10:33