web-dev-qa-db-fra.com

Réintégrer ne peut être utilisé que si les révisions X à Y ont déjà été fusionnées à partir de <URL> pour réintégrer la source, mais ce n'est pas le cas

Utilisé des branches SVN avec Tortoise 1.6. J'ai périodiquement fusionné le tronc dans la succursale pour le maintenir à jour.

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

Réintégrer ne peut être utilisé que si les révisions 4709 à 5019 ont déjà été fusionnées à partir de http://Subversion/svn/saxdev/trunk à la source de réintégration, mais ce n'est pas le cas

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

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: chemin d'accès ajouté:/branches/qst Copier le chemin d'accès:/trunk

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

Des idées?

121
colinjwebb

Si vous travaillez sur une branche et que vous le gardez à jour, vous risquez de vous déranger lorsque vous créez une copie de travail de la ligne et essayez de réintégrer votre branche si vous recevez un message du type:

$ 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 elles m'ont rendu nerveux en tant que "pirate informatique". Pour y remédier, j'ai décidé de faire exactement ce que Subversion laisse entendre dans le message. Je suis retourné dans ma branche et j'ai explicitement fusionné les révisions spécifiées:

$ 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 retourner à la copie de travail du coffre et réintégrer la branche sans aucun problème.

J'espère que ça aide

128
Paul Whipp

[[Bien que ma solution ait fonctionné pour moi dans le passé, elle peut conduire à des résultats incorrects avec les clients SVN modernes. Dans notre cas, les erreurs de fusion semblaient être des sous-produits d’automatisations qui confondaient notre historique SVN et non une activité réelle. Je laisse ceci ici pour la postérité, mais considérez plutôt la réponse acceptée.]]

La solution pour moi était de supprimer tout svn:mergeinfo propriétés 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

Pour trouver les fichiers avec les informations de fusion, vous pouvez:

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é ceci, ma fusion a bien fonctionné.

85
Gray

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

Merge reintegrate test only failed!: "Reintegrate can only be used if some revisions were previously merged from trunk, but this is not the case"

Cliquez sur le texte d'erreur et appuyez sur CTRL + ACTRL + C copier tout le texte.

Collez le texte dans la chaîne here 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 le problème mergeinfo et génère une liste de commandes pour les résoudre.

Vous devrez peut-être changer le 'userdata' valeur adaptée à la structure de votre référentiel.

Exécutez le script pour générer 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 permettant de supprimer le problème rencontré.

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 réponse de Gray , vous devez maintenant valider les modifications dans la branche et essayer de réintégrer. Cette fois, ça devrait marcher!

15

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

Merveilleux

11
colinjwebb

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

5
Olga Perederieieva

Faites comme SVN vous le dit.

  1. Fusionner la branche de la réversion que SVN vous dit
  2. Réintégration de la branche au tronc
3
Farshid Eilami

Voir aussi ma réponse ici pour mon expérience avec un cas similaire. Je ne sais pas si c'est la source de votre problème, mais il semblerait que Subversion 1.8 rencontre des problèmes avec les informations de fusion lorsque deux modifications s'annulent.

1
dewtell

J'ai eu cette erreur après avoir utilisé une caisse partielle d'une branche. Je tenais la succursale à jour avec le coffre, mais les révisions du coffre pour les parties de la branche non extraites n'étaient bien sûr pas mises à jour. Le correctif consistait à effectuer un contrôle complet de la branche, puis à fusionner toutes les modifications apportées au coffre. Après les avoir validés dans la branche, je pourrais fusionner la branche avec le tronc avec succès.

0
John W

J'ai rencontré ce problème. J'ai créé un journal SVN sur ma branche pour déterminer si j'avais fusionné le tronc avec ma branche.

J'ai noté toutes les révisions.

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

J'ai dû faire quelques retours sur mergeinfo, mais mon code a été fusionné.

J'ai immédiatement supprimé ma branche.

0
David