Résoudre les conflits: comment accepter automatiquement «leurs» modifications?

97

Lors de la fusion de modifications conflictuelles à l'aide de hg merge, Mercurial insère un ensemble de marqueurs dans les fichiers à fusionner dans ma copie de travail comme ceci:

<<<<<<< local
  version = 0.2
=======
  version = 0.1
>>>>>>> other

Ensuite, je modifie manuellement tous les fichiers marqués comme U à partir d'une liste produite par hg resolve --all -lpuis je dis à mercurial que je les ai résolus parhg resolve -m file1 file2 file3 ...

Dans de nombreuses situations, je voudrais cependant accepter mes modifications uniquement ou leurs seules modifications sur certains fichiers en conflit. Je pense créer deux simples scripts sed / awk / quel que soit le nom accept-theirs.shet accept-my.shou y a-t-il une manière "appropriée" de le faire?

psihodelia
la source

Réponses:

166

Utilisation

hg resolve -t internal:other --all

accepter theirset

hg resolve -t internal:local --all

accepter yours

Noffls
la source
Merci beaucoup! Je ne comprends pas ce que signifie @djc, mais votre solution fonctionne comme un charme.
psihodelia
@psihodelia djc a dit à peu près la même chose, essayez hg help merge-tools(mergetools est un alias dans les dernières versions)
MGP
6
En remarque, j'ai aliasé ceci:[alias] mine = resolve -t internal:local theirs = resolve -t internal:other
Melvyn
1
Ce sont trois lignes à ajouter à la sienne .hgrc, pour les débutants:, [alias]alors mine = resolve -t internal:local, alors theirs = resolve -t internal:other. Après cela, vous pouvez utiliser hg mine some_file.pyou hg theirs -a(pour tous)
Tobia
1
À partir de phab.mercurial-scm.org/D4379 , vous devrez peut-être également inclure le --re-mergedrapeau (par exemple hg resolve -t internal:other --re-merge --all)
Ethan Koenig
23

Essaye ça:

hg merge --tool 'internal:other'

Voir aussi hg help merge-toolspour plus d'informations.

djc
la source
1
Ou resolvepour des fichiers uniques / le refaire. (De plus, les citations ne internal:othersont pas nécessaires.)
Chris Morgan