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?
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
[[ 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.
Si vous essayez de réintégrer votre branche dans trunk et que vous voyez des erreurs comme celle-ci de TortoiseSVN:
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!
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
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.
Faites ce que SVN vous dit.
- fusionne la branche de la réversion que SVN vous indique
- réintégrer de la branche au tronc
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.