web-dev-qa-db-fra.com

Comment abandonner une fusion de hg?

Je commence à collaborer avec Mercurial. Ma situation:

  • Un autre programmeur a modifié la rév. 1 d'un fichier pour remplacer les retraits de 4 espaces par des retraits de 2 espaces. (C.-à-d. Changé chaque ligne.) Appelez ce rev 2, poussé vers le dépôt distant.
  • J'ai apporté des modifications de fond rév 1 avec diverses modifications de code dans mon espace de travail local. Appelez ça rev 3.
  • J'ai hg pulled et hg merged sans une idée claire de ce qui se passait.
  • Les conflits sont innombrables et pas vraiment substantiels.

Donc, j'aurais vraiment aimé avoir changé mon repo locale en retrait à 2 espaces avant de fusionner; alors la fusion sera triviale (je suppose). Mais je n'arrive pas à revenir en arrière. Je pense que j'ai besoin de hg update -r 3 mais il est dit abort: outstanding uncommitted merges.

Comment annuler la fusion, modifier l'espacement dans mon référentiel local et le rétablir?

126
Grumdrig

Vous pouvez annuler les modifications non validées avec l'indicateur -C (ou --clean):

hg update -C -r 3

ATTENTION: Tout ce qui n'a pas été engagé sera parti!

Après cela, vous devriez probablement utiliser une sorte d’outil de formatage de code pour effectuer toute l’opération, ou au moins trouver et remplacer par des expressions régulières. Quelque chose d'aussi simple que de remplacer ce qui correspond à ^____ (utilisez 4 espaces au lieu de traits de soulignement) avec __ (2 espaces), répété quelques fois (sauf si vous avez un code imbriqué) devrait fonctionner.

121

BTW: si vous annulez simplement la fusion que vous avez faite et que 3 n'est pas votre numéro de révision, vous pouvez le faire:

hg update -C -r .
123
math

Pour annuler une fusion non validée, utilisez

hg update --clean

qui extraira une copie vierge du parent de fusion original, perdant toutes les modifications.

30
Tao

J'ai apparemment juste besoin de hg update -C -r 3, Qui écrase mes fichiers locaux avec le révérend en tête (ce que je pensais que hg update Ferait; mais j'avais tort.) Merci de mon aide!

2
Grumdrig