son - La fusión SVN no está fusionando nada para algunas revisiones
tortoise svn merge branch to trunk (2)
Estamos utilizando Subversion y TortoiseSVN. Utilizamos el tronco para el desarrollo y las ramas para representar lanzamientos estables. Los cambios (correcciones de errores) que se realizan en una rama se combinan posteriormente en el tronco. No somos expertos en subversión, pero en general esto funciona bien para nosotros.
Recientemente, estaba fusionando un montón de cambios de una rama al tronco, y llegué a una revisión en la que la fusión no hace nada.
Command Merging revisions 7233-7234 of .../branches/RB-7.2.0 into C:/Core, respecting ancestry
C:/Core
Finished!
La revisión de la rama claramente tiene cambios asociados, los archivos involucrados no son nuevos, y los cambios no aparecen en mi copia de trabajo del tronco, así que no sé por qué no funciona. Parece que hay varias revisiones de bifurcaciones consecutivas que se comportan de esta manera (que involucran varios archivos diferentes), y luego las que se comportan normalmente.
Sé que es posible bloquear las revisiones para que no se fusionen, marcando la fusión como solo de registro (la revisión se marca como fusionada aunque no lo sea). Así que lo único que puedo pensar es que estas revisiones se han bloqueado de alguna manera. . En el tronco, los archivos que deberían combinarse no parecen tener nada en la propiedad mergeinfo, y ninguno de sus carpetas principales. Pero no estoy seguro de si o dónde esperaría ver esa información. Además, el cuadro de diálogo "mostrar registro" del cuadro de diálogo de combinación parece mostrar todas las revisiones, incluidas las que ya he fusionado con éxito, independientemente de si está seleccionada la opción "incluir revisiones combinadas".
Así que mis preguntas son las siguientes:
- ¿Hay alguna forma de confirmar que esta teoría de revisiones está bloqueada?
- Si las revisiones están bloqueadas, ¿hay alguna forma de desbloquearlas?
- Si no están bloqueados, ¿qué más debo mirar?
Actualización: Después de confirmar que el problema no está relacionado con las revisiones que se están bloqueando, intenté la combinación nuevamente desde la línea de comandos en lugar de hacerlo a través de una tortuga. Hizo la fusión (¡yay!) Pero ahora que lo estoy viendo, me doy cuenta de que la mergeinfo no se actualiza para ninguno de los archivos modificados, solo para 6 archivos no relacionados que ya tenían mergeinfo. No estoy seguro de si estar preocupado por esto. Todavía no sé por qué la tortuga no funciona, pero al menos puedo hacer mi trabajo.
Cuando Tortoise realiza la fusión, solo usará la propiedad mergeinfo para determinar qué revisiones se fusionarán si deja el cuadro de revisión vacío. Entonces, ''desbloqueas'' la revisión, simplemente fusionas esa explícitamente. Tortoise no lista las revisiones ya fusionadas en el registro
Tortoise puede volver a grabar la combinación en mergeinfo, así que eche un vistazo a las propiedades svn del directorio para ver si hace eso (y edite la entrada adicional, aunque creo que el servidor lo hará, es más fácil hacerlo manualmente de vez en cuando) .
La forma alternativa es mirar la propiedad mergeinfo y ver si esta revisión ya está en la lista, si es así, elimínela y confírmela. Luego repita la fusión y debería funcionar como usted espera.
El destino suele tener el mergeinfo, pero supongo que en su caso la rama también tiene algunos que podrían estar bloqueando la fusión. Háganos saber si este es el caso, me interesaría ver lo que realmente está sucediendo para usted.
Es posible que se haya grabado la fusión. Para volver a verificar, Desde C: / Core (se parece a la verificación de su troncal):
svn propget -R svn:mergeinfo > mergeinfo.txt
Busque en el archivo resultante para ver si los números de revisión en cuestión están listados. Recuerde: este es el TRUNK que desea verificar, ya que es el objetivo de la combinación.
Puede aparecer como un rango, por lo que una búsqueda # directa puede no funcionar (el archivo .eg podría mostrar 7230-7240, no 7234). Si no, algo más está sucediendo. Si es así, tal vez la combinación se registró en un archivo o Carpeta que no había sido comprobada.
No estoy seguro de cómo revertir la grabación de mergeinfo sin edición manual (NO SE RECOMIENDA), pero puede forzarla a volver a fusionar la (s) revisión (es) al pasar --ignore-ancestry. Si eso hace que la fusión haga algo, entonces svn pensó que la fusión ya había ocurrido y debería haber visto la evidencia anterior.
Si la combinación no está registrada y los pasos anteriores no la resolvieron, consulte las listas de correo svn para obtener ideas.