SVN integrando una twig de características que ha sido networkingiseñada a trunk – ¿Por qué svn: mergeinfo se actualizó a pesar de no haber cambios?

Este ejemplo es de SVN 1.8.

Usamos la técnica común con un tronco y twigs características. Normalmente, una twig de entidad se crea mediante la bifurcación de troncales. La twig de características se actualiza continuamente con el enlace troncal mediante la fusión de los cambios del tronco a la twig de características (rebase). Cuando finaliza el desarrollo en la twig de características, el contenido se fusiona nuevamente en el tronco.

Cuando la twig de características se fusiona de nuevo en el enlace troncal, todos los cambios en la twig de características, incluidos los creados por rebase, se registran en la propiedad svn: mergeinfo del file / carpeta en el enlace troncal. Una consecuencia de esto es que los files y las carpetas que no se han actualizado en la twig de características (excepto por rebase) se marcan como cambiados (solo propiedad) cuando la twig de características se fusiona de nuevo en el enlace troncal.

¿Por qué es esto necesario? El logging de troncal muestra que estas carpetas / files cambiaron cuando la twig de características se fusionó de nuevo en el troncal a pesar de que no se ha cambiado el contenido de carpetas / files en la twig de características relativa al troncal. Esto es bastante confuso para nuestros desarrolladores porque TortoiseSVN muestra que se han actualizado muchas carpetas / files que no han cambiado. ¿Es esto realmente el comportamiento deseable?

SVN no es realmente muy inteligente sobre el seguimiento de fusión. Solo presta atención a "qué versiones me dijiste que fusionara" y no "de dónde vinieron originalmente los cambios en estas versiones". Le dijiste a SVN que fusionara una sucursal entera; así que SVN hizo exactamente eso, registrando cada versión en esa twig como fusionada.

Dicho eso, puedes tomar medidas para eliminar algunos de los gastos generales. Si siempre realiza fusiones solo desde la carpeta de nivel superior para su proyecto, solo tendrá mergeinfo en esa carpeta de nivel superior; no tendrá un grupo de subcarpetas y files con el set de properties. Parece que debe haber escogido cuidadosamente files y carpetas específicos dentro del proyecto mientras fusiona "rebase". Si puede evitar hacerlo, sus datos de logging se verán mucho más limpios, y solo cambiarán las properties de la carpeta de nivel superior para su fusión final.