Reintegrate ne peut être utilisé que si les révisions X à Y ont été précédemment fusionnées pour réintégrer la source, mais ce n'est pas le cas

Utilise des branches SVN avec Tortoise 1.6. J'ai périodiquement fusionné le tronc dans la branche pour le garder à jour.

Aujourd'hui, j'ai pensé réintégrer la branche. J'ai choisi "réintégrer une branche" de Tortoise et j'ai reçu le message d'erreur suivant:

Reintegrate ne peut être utilisé que si les révisions 4709 à 5019 ont été précédemment fusionnées de http://subversion/svn/saxdev/trunk à la source reintegrate, mais ce n'est pas le cas

Il a ensuite répertorié environ 50 fichiers avec descriptions telles que ceci:

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

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

La révision 5019 est la révision principale. La révision 4737 était la révision lorsque j'ai créé une branche.

J'ai ceci du journal pour la révision 4737

Action: a Ajouté Path: /branches/tvq Copie de chemin d'accès: /tronc

Pour moi, ce message d'erreur dit que la branche n'était pas à l'origine du tronc, ce qui n'est pas vrai.

Des idées?

116
demandé sur Bizmarck 2011-01-19 19:08:53

8 réponses

Si vous travaillez sur une branche et que vous l'avez tenue à jour avec d'autres travaux, vous pourriez être perplexe lorsque vous créez une copie de travail du tronc et tentez de réintégrer votre branche si vous obtenez un message comme ceci:

$ 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

J'ai vu un certain nombre de solutions de contournement sur Google, mais ils m'ont rendu nerveux comme des "hacks". Pour y remédier, j'ai décidé de faire exactement ce que subversion fait allusion dans le message. Je suis retourné à ma branche et explicitement fusionné le spécifié révisions:

$ 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.

Une fois que j'ai fait cela, j'ai pu revenir à la copie de travail de trunk et réintégrer la branche sans aucun problème.

J'espère que cela aide

121
répondu Paul Whipp 2015-07-13 22:21:29

[[ Bien que ma solution ait fonctionné pour moi dans le passé, elle peut conduire à des résultats inappropriés avec les clients SVN modernes. Dans notre cas, les erreurs de fusion semblaient être des sous-produits d'automatismes qui confondaient notre historique SVN et non notre activité réelle. Je laisse ceci ici pour la postérité mais veuillez considérer la réponse acceptée à la place. ]]

La solution pour moi était de supprimer toutes les propriétés svn:mergeinfo qui sont en quelque sorte attachées à des fichiers individuels dans la hiérarchie.

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

À trouvez les fichiers avec les informations mergeinfo que vous pouvez faire:

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

Ensuite, vous pouvez supprimer les propriétés 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 ...

Après avoir terminé cela, ma Fusion s'est bien exécutée.

79
répondu Gray 2015-07-15 15:54:44

Si vous essayez de réintégrer votre branche dans trunk et que vous voyez des erreurs comme celle-ci de TortoiseSVN:

Fusion réintégration test seulement échoué!: "Reintegrate ne peut être utilisé que si certaines révisions ont été précédemment fusionnées à partir du tronc, mais ce n'est pas le cas"

Cliquez sur le texte d'erreur et appuyez sur la touche CTRL + UN, CTRL + C à copier tout le texte.

Collez le texte dans la chaîne ici de ce script 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 $_" }

Le script extrait les chemins relatifs des fichiers avec mergeinfo problème et affiche une liste de commandes pour corriger chacun.

Vous devrez peut-être changer la valeur 'userdata' en fonction de la structure de votre référentiel.

Exécutez le script pour afficher les commandes dont vous avez besoin pour supprimer le problème mergeinfos.

Dans cet exemple, le script produirait cette sortie:

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  

À l'invite de commande, vous pouvez accéder à la base de la branche (myproject) et exécuter les commandes pour supprimer le problème mergeinfos.

Vous devriez voir la sortie comme ceci:

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'.

Comme dans la réponse de Gray , vous devez maintenant valider les modifications branche et essayer de réintégrer à nouveau. Cette fois, il devrait fonctionner!

15
répondu Iain Samuel McLean Elder 2017-05-23 12:34:21

En fait, je l'ai corrigé en utilisant l'option "Fusionner deux branches différentes" pour fusionner le tronc et la branche dans ma copie de travail. Puis j'ai commis ça dans le coffre.

Merveilleux

11
répondu colinjwebb 2011-01-19 16:37:05

Quelque chose qui a fonctionné pour moi dans tortoise SVN: au lieu de fusionner toutes les révisions de la branche, choisissez une plage spécifique et sélectionnez manuellement toutes vos révisions de la branche.

5
répondu Olga Perederieieva 2017-08-22 22:23:07

Faites ce que SVN vous dit.

  1. fusionne la branche de la réversion que SVN vous indique
  2. réintégrer de la branche au tronc
3
répondu Farshid Eilami 2013-12-09 12:28:22

Voir aussi ma réponse ici pour mon expérience avec un cas similaire. Je ne suis pas sûr si c'est la source de votre problème, mais il semble que Subversion 1.8 ait des problèmes avec mergeinfo lorsque deux modifications s'annulent.

1
répondu dewtell 2017-05-23 11:47:08

J'ai rencontré ce problème. J'ai fait un journal SVN sur ma branche pour trouver si j'avais fusionné le tronc à ma branche.

J'ai noté toutes les révisions.

J'ai ensuite fait la fusion de ma branche au tronc en spécifiant les révisions manuellement. J'ai spécifié toutes les plages pour exclure les révisions où j'ai fusionné le tronc. Je parviens à faire fusionner ma branche.

J'ai dû faire quelques reverts sur mergeinfo, mais j'ai fusionné mon code.

J'ai immédiatement supprimé ma branche.

0
répondu David 2015-04-13 19:38:34