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?
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
[[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é.
Si vous essayez de réintégrer votre branche dans le tronc et que vous voyez des erreurs comme celle-ci de TortoiseSVN:
Cliquez sur le texte d'erreur et appuyez sur CTRL + A, CTRL + 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!
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
Faites comme SVN vous le dit.
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.
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.
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.