Question

Dans notre configuration du projet Mercurial nous avons 3 succursales dans un référentiel unique. La première est une branche de libération stable où des corrections de bugs urgents sont faites, on est une branche de caractéristique qui contient le nouveau code de fonction et une est une branche UAT où les deux corrections de bugs et de nouvelles fonctionnalités sont fusionnées en fournir la plus base de code mise à jour .

Nous avons fusionné une charge tout nouveau code de fonction dans la branche UAT sans aucun problème du tout. Par la suite, nous avons fusionné la branche stable avec les corrections de bugs dans la branche UAT, mais cela semble avoir pour effet de supprimer le nouveau code de fonction. Je l'ai découvert que ce problème a été causé par une personne fusion UAT dans une écurie il y a quelque temps (qui aurait jamais arrivé !!). Maintenant, lorsque je tente de fusionner les corrections de bugs dans UAT il supprime tout le nouveau code de fonction.

Est-il possible d'éliminer les effets de la fusion de l'UAT dans stable, tout en conservant les corrections de bugs qui sont des descendants après cette « mauvaise fusion »? J'ai essayé de soutenir la fusion, mais il semble avoir aucun effet. Puis-je faire une bande et re-rajouter les changesets requises?

Merci à l'avance.

Était-ce utile?

La solution

Je l'ai effectivement réussi à résoudre ce problème moi-même par un peu d'essais et d'erreurs.

D'abord, vous devez activer la greffe et les extensions mqMerge dans votre fichier Mercurial.ini. Ajoutez les lignes suivantes lignes ci-dessous l'en-tête d'extension

   transplant=
   mq=

Clone un référentiel vers un nouvel emplacement. Dans votre nouveau repo, retirez la mauvaise fusion en utilisant la commande de la bande à l'histoire claire l'effet de la mauvaise fusion est supprimée. (Attention que cela supprimera tous les changesets descendants)

Ensuite, vous devez cherrypick tous les changesets requis dans l'ordre chronologique de l'autre repo en utilisant une commande similaire à ci-dessous

    hg transplant -s "otherRepo" -b "branchName" "changesetHexNumber"

Répétez la commande de greffe pour toutes les changesets nécessaires. Ouila!

NB:. Si vous utilisez un référentiel central, vous devrez enlever la fusion / changset offenser là-bas aussi, sinon votre repo locale pensera que vous avez à tirer changesets en suspens

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top