2010-12-09 12 views
6

Je viens d'un CVS de fond.La mise à jour Mercurial écrase mes modifications au lieu de fusionner

Actuellement, j'ai 2 dépôts mercurial développés parallèlement. hello-world-bugfix et hello-world-feature (Celui-ci est cloné à partir hello-world-bugfix)

Maintenant, je veux fusionner le bug de code fixe hello-world-bugfix dans hello-world-feature, de sorte que la fin de la journée, je vais obtenir un fichier fusionné.

[BUG2 BUG2 BUG2] 

START 
[BUG1 BUG1 BUG1] 

[FEATURE2 FEATURE2 FEATURE2] 

Voici à quoi ressemblent toutes les choses avant, en tirant et en fusionnant. Les deux fichiers ci-dessous ont déjà été validés.

alt text


alt text


Maintenant, je joue de tirer hello-world-feature, pour tirer des changements de hello-world-bugfix. Ensuite, j'effectue la mise à jour, avec always merge options activées. alt text

Voici mon fichier fusionné ???

[BUG2 BUG2 BUG2] 

START 
[BUG1 BUG1 BUG1] 

Il semble que mon précédent [FEATURE2 FEATURE2 FEATURE2] ait été remplacé.

Il semble que je ne devrais pas effectuer l'étape de mise à jour, qui ne fusionnera pas avec featurebug, mais écraser feature loin avec bug. Quelle est la prochaine étape correcte que je devrais faire après avoir tiré? (par l'intermédiaire de TortoiseHg), de sorte que je peux obtenir le code de correction de bogue, et reste le code de dispositif là?

est ici le point de vue du dépôt final de hello-world-feature alt text

Répondre

7

L'option « fusion toujours » ne fait pas ce que vous pensez.

Il fusionne uniquement les modifications non validées. Lorsque vous mettez à jour, les fichiers validés sont remplacés par la nouvelle version.

Pour fusionner les modifications validées, c.-à-d. fusionner des branches, vous devez effectuer une fusion explicite.

Donc, je voudrais sélectionner le changeset BUG2 BUG2 BUG2 dans le journal, puis faites un clic droit sur le changeset FEATURE2 FEATURE2 FEATURE2 et cliquez sur Fusionner, et suivez les instructions. Permettez-moi de développer ce que fait la case à cocher "Toujours fusionner". Disons que j'ai deux changesets dans mon dépôt, je mets à jour le premier d'entre eux, puis je commence à modifier un des fichiers.

À un certain moment, je décide qu'il serait préférable d'avoir commencé à partir de l'autre changeset à la place, donc je veux mettre à jour, en gardant mes modifications.

Si je ne simplement une mise à jour, avec des modifications non validées, je reçois cette boîte de dialogue lorsque je tente de mettre à jour:

Confirm Update

Cependant, si je coche la case « fusionner toujours (si possible) » case à cocher , il faudra simplement supposer que j'ai cliqué sur le bouton Fusionner dans cette boîte de dialogue et ne pas me demander. Par conséquent, la fonction "Toujours fusionner" n'a aucune fonction sur les fichiers validés, elle n'introduira pas de fusions pour vous, elle essaiera seulement de déplacer vos modifications locales avec la mise à jour.