Reintegrate solo se puede usar si las revisiones X a Y se fusionaron previamente de <URL> para reintegrar la fuente, pero este no es el caso

127

He estado usando ramas SVN con Tortoise 1.6. He estado fusionando periódicamente el tronco en la rama para mantenerlo actualizado.

Hoy, pensé en reintegrar la rama. Elegí "Reintegrate a branch" de Tortoise y recibí el siguiente mensaje de error:

La reintegración solo se puede usar si las revisiones 4709 a 5019 se fusionaron previamente http://subversion/svn/saxdev/trunkcon la fuente de reintegración, pero este no es el caso

Luego enumeró alrededor de 50 archivos con descripciones como esta:

Error: branches/qst/kobalt/sax/businessobjects/util/HistoryParent.java

Error: Missing ranges: /trunk/kobalt/sax/businessobjects/util/HistoryParent.java:4709-5018

La revisión 5019 es la revisión principal. La revisión 4737 fue la revisión cuando creé una rama.

Tengo esto del registro para la revisión 4737

Acción: Ruta agregada: / sucursales / qst Copiar de la ruta: / trunk

Para mí, ese mensaje de error dice que la rama no era originalmente del tronco, lo cual no es cierto.

¿Algunas ideas?

colinjwebb
fuente
1
Bueno. Realmente ya no uso Subversion, ¡pero tomaré tu palabra!
colinjwebb
1
Gracias amigo Creo que la página es mejor para eso.
Grey

Respuestas:

138

Si está trabajando en una rama y lo ha mantenido actualizado con el trabajo de otras personas, puede que se sienta desconcertado cuando cree una copia de trabajo de la troncal e intente reintegrar su rama si recibe un mensaje como este:

$ svn merge --reintegrate https://server.blah/source/orb/branches/bronze_services
svn: Reintegrate can only be used if revisions 650 through 694 were previously merged from
     https://server.blah/source/orb/trunk to the reintegrate source, but this is not the
     case:
  branches/bronze_services/occl
    Missing ranges: /trunk/occl:650-693

He visto varias soluciones en Google, pero me pusieron nervioso como 'hacks'. Para abordarlo, decidí hacer exactamente qué subversión está insinuando en el mensaje. Regresé a mi sucursal y fusioné explícitamente las revisiones especificadas:

$ svn merge -r 650:693 https://server.blah/source/orb/trunk
$ svn commit -m 'merged revisions 650:693 from trunk'
    Sending        occl
Committed revision 695.

Una vez que hice esto, pude volver a la copia de trabajo del tronco y reintegrar la rama sin ningún problema.

espero que esto ayude

Paul Whipp
fuente
16
¡Agradable! "haz exactamente qué subversión está insinuando en el mensaje". :)
Adam
77
Estoy de acuerdo, la respuesta más popular es tentadora, pero probablemente sea mejor solucionarla correctamente. Tuve que ir al archivo problemático específico y svn mergedesde el tronco.
Steve Kehlet
1
Esto funciono muy bien para mi. El truco principal era que Tortoise no me decía la revisión del problema. Después de actualizar mi cliente de svn de línea de comandos, pude obtener un mensaje como el tuyo, y luego pude fusionar la revisión del problema y volver al tronco.
user12861
77
Esto no funcionó para mí porque las fusiones "faltantes" enumeradas ya se habían realizado en la rama (fuente de reintegración).
Sam
66
Si bien esta respuesta suena razonable, no funcionó para mí. Seguí recibiendo los mismos mensajes de error. Lo que ayudó fue eliminar las propiedades svn: mergeinfo de los archivos enumerados, tal como sugiere la respuesta aceptada.
Jenny O'Reilly
85

[[Aunque mi solución ha funcionado para mí en el pasado, puede conducir a resultados inadecuados con clientes SVN modernos. En nuestro caso, los errores de fusión parecían ser subproductos de automatizaciones que confundían nuestra historia SVN y no una actividad real. Dejo esto aquí para la posteridad, pero considere la respuesta aceptada en su lugar. ]]

La solución para mí fue eliminar cualquier svn:mergeinfopropiedad que de alguna manera se adjunte a archivos individuales en la jerarquía.

svn merge --reintegrate svn+ssh://svn/usr/local/svn/repos/all/trunk 
svn: Reintegrate can only be used if revisions 18765 through 18921 were
    previously merged from svn+ssh://svn/usr/local/svn/repos/all/trunk to the
    reintegrate source, but this is not the case:
trunk/proj/src/main/java/com/foo/furniture.java
Missing ranges: /trunk/proj/src/main/java/com/foo/furniture.java:18765-18920

Para encontrar los archivos con información de mergeinfo puede hacer:

cd ~/svn/branches/2.7
svn propget -R svn:mergeinfo .

Luego puede eliminar las propiedades de mergeinfo:

svn propdel svn:mergeinfo proj/src/main/java/com/foo/furniture.java ...
svn commit -m 'removed mergeinfo' proj/src/main/java/com/foo/furniture.java ...

Después de completar esto, mi fusión se ejecutó bien.

gris
fuente
2
Esto realmente me ayudó a resolver mi problema, pero el mío se debió a la fusión de una revisión de una carpeta secundaria en lugar de hacerlo en la carpeta raíz. Mi problema fue que había realizado la fusión pero la carpeta raíz no había reconocido que la fusión había sucedido, esto significaba que tenía que actualizar manualmente el accesorio mergeinfo con los números de revisión faltantes. NOTA Solo pude hacer esto porque no hubo otros cambios de archivos para la revisión y provocará un comportamiento inesperado si se necesitan fusionar otros archivos; si este es el caso, deberá volver a fusionar las revisiones.
Orden de ejecución
55
En TortoiseSVN, puede hacer clic con el botón derecho en el archivo, seleccionar "TortoiseSVN" -> "Propiedades" y eliminar la propiedad svn: mergeinfo.
StarCub
3
@StephenKennedy Es posible que se encuentre con el problema de reutilizar una rama que ya se ha reintegrado. Si es así, consulte la última sección de svnbook.red-bean.com/en/1.7/… que comienza con "Una vez que se realiza una fusión de reintegración de rama a tronco, la rama ya no se puede utilizar para más trabajo".
AlexMA
66
+1. No es necesario eliminar todos los mergeinfos; solo los que tienen rangos faltantes. Vea mi respuesta para una forma de eliminar solo el problema mergeinfos filtrando la salida de error TortoiseSVN.
Iain Samuel McLean Élder
44
-1. No debe eliminar las propiedades de mergeinfo a menos que esté realmente seguro de lo que está haciendo. Mucha gente puede leer esto, eliminar estas propiedades e inadvertidamente introducir otros problemas. Paul Whipp tiene una mejor respuesta.
Bizmarck
15

Si intenta reintegrar su rama al tronco y ve errores como este de TortoiseSVN:

¡La prueba de reintegración de fusión solo falló !: "Reintegrar solo se puede usar si algunas revisiones se fusionaron previamente desde el tronco, pero este no es el caso"

Haga clic en el texto de error y presione CTRL+ A, CTRL+ Cpara copiar todo el texto.

Pegue el texto en la cadena de este script de PowerShell:

@"
Command: Reintegrate merge http://svn.cloudcorp.com/branches/myproject into C:\Users\iain\Documents\Repositories\CloudCorp\trunk  
Error: Reintegrate can only be used if revisions 18089 through 18612 were previously  
Error:  merged from http://svn.corp.skyscanner.local/svn/SkyScannerDatabase/trunk to  
Error:  the reintegrate source, but this is not the case:  
Error:    
Error:  branches/myproject/userdata/usermanagementservice  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/usermanagementservice:18365,18404  
Error:    
Error:  branches/myproject/userdata/auto_create_db.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/auto_create_db.sql:18406  
Error:   
Error:    
Error:  branches/myproject/userdata/create_audit_tables_triggers_uds.sql  
Error:   
Error:     Missing ranges:  
Error:  /trunk/userdata/create_audit_tables_triggers_uds.sql:18406  
"@ -split "`n" |
? { $_ -match ('Error: +branches') } |
% { $_.Substring($_.IndexOf('userdata')) } |
% { "svn propdel svn:mergeinfo $_" }

El script extrae las rutas relativas de los archivos con mergeinfo problemático y genera una lista de comandos para corregir cada uno.

Puede que tenga que cambiar el 'userdata'valor para adaptarlo a su estructura de repositorio.

Ejecute el script para generar los comandos que necesita para eliminar el problema mergeinfos.

En este ejemplo, el script produciría esta salida:

svn propdel svn:mergeinfo userdata/usermanagementservice  
svn propdel svn:mergeinfo userdata/auto_create_db.sql  
svn propdel svn:mergeinfo userdata/create_audit_tables_triggers_uds.sql  

En el símbolo del sistema, puede navegar a la base de la sucursal (myproject) y ejecutar los comandos para eliminar el problema mergeinfos.

Debería ver una salida como esta:

property 'svn:mergeinfo' deleted from 'userdata\usermanagementservice'.
property 'svn:mergeinfo' deleted from 'userdata\auto_create_db.sql'.
property 'svn:mergeinfo' deleted from 'userdata\create_audit_tables_triggers_uds.sql'.

Como en la respuesta de Gray , ahora debe confirmar los cambios en la rama e intentar reintegrarse nuevamente. ¡Esta vez debería funcionar!

Iain Samuel McLean Anciano
fuente
1
Mucho antes de reintegrarme, fusioné (no reintegraré) algunos cambios al tronco de mi rama porque accidentalmente me comprometí con mi rama cuando tenía la intención de comprometerme con el tronco. ¿Podría ser la razón detrás de estos errores de reintegración?
Iain Samuel McLean Élder
Eso es exactamente lo que parece haber causado este problema en mi caso. ¡Gracias por tomarse el tiempo para escribir el guión!
Sam
@Sam Me alegro de que te haya resultado útil. ¿Necesitabas reemplazar el espacio literal con un \s+para que funcione para ti?
Iain Samuel McLean Élder
Algo así como; era más lo +que se necesitaba para que funcionara para mí. En mi caso, algunas líneas tenían dos espacios y otras tenían tres, por lo que se necesitaba soporte para un número variable de espacios. No estoy seguro de por qué cambié el espacio a a \s; eso probablemente no era necesario, ¡lo siento por esa parte!
Sam
@Sam No te preocupes, pero lo cambiaré de nuevo a un espacio literal por ahora hasta que TortoiseSVN comience a mezclarlo con pestañas o lo que sea :-) He dejado el +ya que fue útil para ti.
Iain Samuel McLean Elder
11

En realidad lo arreglé usando la opción "fusionar dos ramas diferentes" para fusionar el tronco y la rama en mi copia de trabajo. Luego lo comprometí con el maletero.

Maravilloso

colinjwebb
fuente
44
Esta respuesta realmente no explica lo que hiciste. No hay ejemplos, ni siquiera un enlace a la sección requerida del manual.
zigg
En retrospectiva, no, no lo hace. Sin embargo, como esta fue mi propia respuesta el mismo día que la pregunta, fue la mejor respuesta durante unos meses. Sin embargo, me gustaría suponer que tiene sentido si todavía usa Tortoise SVN 1.6. He aceptado la respuesta de Gray como la respuesta aceptada ahora.
colinjwebb
Ejemplo: svn merge ^ / tags / wx ^ / tags / yz. El error de reintegración apareció para mí cuando usé 1.8 y me fusioné en el enlace troncal donde la fuente de fusión había tenido una revisión específica previamente fusionada desde el enlace troncal. 1.8 parecía decidir que se intentaba una fusión de reintegración, que no fue así. Una combinación en seco con 1.6 funcionaría bien, pero las dos combinaciones de URL también encajan.
Nick
1
El escenario preciso que falló con 1.8 fue copiar una etiqueta de algunas revisiones para un lanzamiento de parche, elegir un cambio del tronco al backport mediante una fusión en la etiqueta parcheada, hacer un cambio adicional a la etiqueta parchada y fusionarla nuevamente en el maletero Los cambios entre la etiqueta base y la versión parcheada son los que deben fusionarse nuevamente en el tronco, y una combinación de 2 URL funciona de maravilla para eso.
Nick
Debería haber leído esta respuesta antes de pasar 3 días tratando de entender lo que estaba pasando. Todavía no entiendo por qué he tenido este problema, pero sospecha que el comentario de @ Nick es la razón - y ahora las cosas están funcionando no voy a mirar más allá ...
Dave Richardson
6

Algo que funcionó para mí en la tortuga SVN: en lugar de fusionar todas las revisiones de la rama, elija un rango específico y seleccione manualmente todas sus revisiones de la rama.

Olga Perederieieva
fuente
1
Gracias por una idea tan básica. De todas las respuestas, esta no solo fue la menos complicada, sino que fue la única que funcionó para mí.
redman
3

Solo haz lo que SVN te está diciendo.

  1. Combina la rama de la reversión que SVN te está diciendo
  2. Reintegrar de rama a tronco
Farshid Eilami
fuente
2
No funciono para mi. Los cambios ya existían en la rama. Parece que sus instrucciones deberían funcionar para algunos casos, pero parecen estar basadas en una suposición, por lo que no parecen universales.
Sam
1

Vea también mi respuesta aquí para mi experiencia con un caso similar. No estoy seguro de si esta es la fuente de su problema, pero parece que la Subversión 1.8 tiene problemas con mergeinfo cuando dos cambios se cancelan entre sí.

rocío
fuente
0

Me encontré con este problema. Hice un registro SVN en mi rama para encontrar dónde había fusionado el tronco con mi rama.

Tomé nota de todas las revisiones.

Luego fusioné mi rama con el tronco especificando las revisiones manualmente. Especifiqué todos los rangos para excluir las revisiones donde fusioné troncal. Me las arreglo para fusionar mi sucursal.

Tuve que hacer algunas reversiones en mergeinfo, pero fusioné mi código.

Inmediatamente borré mi rama.

David
fuente
0

Recibí este error después de usar un pago parcial de una rama. Estaba manteniendo la rama actualizada con el tronco, pero las revisiones del tronco para partes de la rama que no se verificaron, por supuesto, no se actualizaron. La solución fue hacer un pago completo de la rama y luego fusionar todos los cambios del tronco. Después de enviarlos a la rama, pude fusionar la rama con el tronco con éxito.

John W
fuente
0

Tengo este problema en

  • TortoiseSVN 1.9.7, Build 27907 - 64 Bit, 08/08/2017 19:34:38
  • Subversion 1.9.7, -lanzamiento
  • abr 1.5.2
  • apr-util 1.5.4
  • siervo 1.3.9
  • OpenSSL 1.0.2l 25 de mayo de 2017
  • zlib 1.2.8
  • SQLite 3.14.1

haga clic derecho en la rama donde desea fusionar (pero recibe este mensaje) y seleccione la opción "actualizar a revisión" y luego en el cuadro de diálogo que se abre (captura de pantalla a continuación) seleccione esas revisiones y haga clic en Aceptar, una vez que se fusionen todas las revisiones anteriores, no recibirías este mensaje

ingrese la descripción de la imagen aquí

Agregar esto aquí para ayudar a alguien que está usando Tortoise SVN

Akber Iqbal
fuente
-1

Sé que esta es una publicación antigua, pero estaba luchando para resolver este problema también hasta que descubrí que los archivos enumerados en el mensaje de error tienen un problema de propiedad SVN.

Hice clic derecho en los archivos con problemas: TortoiseSVN> Propiedades, y descubrí que el archivo tenía dos svn: mergeinfo, y uno de ellos no se había heredado de los datos. Así que eliminé esa información de combinación.

Yo uso TortoiseSVN 1.12.2, Build 28653 - 64 Bit.

awan.soekamto
fuente