Mercurial: Fusion d’un fichier entre twigs dans un repo

Lorsque j’ai deux twigs dans repo Hg, comment fusionner un seul fichier avec une autre twig, sans que tous les autres fichiers de modifications soient fusionnés?

Est-il possible de fusionner uniquement certains fichiers, au lieu de l’ensemble des modifications?

ATTENTION: une telle “fusion factice”, comme le recommande @Martin_Geisler, peut vraiment vous gâcher, si plus tard vous voulez faire une véritable fusion des deux twigs. La fusion factice sera enregistrée et vous dites que vous fusionnez dans la twig vers laquelle le mannequin a fusionné – vous ne verrez pas les modifications. Ou si vous fusionnez dans l’autre twig, les modifications sur cette autre twig seront annulées.

Si tout ce que vous voulez, c’est copier un fichier entier d’une twig à une autre, vous pouvez simplement faire:

hg update -r to-branch hg revert -r from-branch file hg ci -m 'copied single file from from-branch to to-branch 

Si vous souhaitez sélectionner différentes parties de ce fichier, "hg record" est utile.

Je viens de le faire sur mon répertoire personnel .hgignore.

Si les deux twigs ont apporté des modifications à un fichier que vous souhaitez conserver, une erreur consiste à créer une fusion des deux twigs à l’aide de hg merge, éventuellement / probablement sur une autre twig, cochez cette case, puis copiez un seul fichier. entre la fusion et le to-branch:

  hg update -r to-branch branch merge-branch hg merge -r from-branch hg ci -m 'temp merge to be discarded" hg update -r to-branch hg revert -r merge-branch single-file hg ci -m 'merged single-file from from-branch to to-branch" hg ssortingp merge-branch 

Il convient de mentionner: la manière de “copier un seul fichier entre twigs” (ou des révisions, ou de la révision à la fusion, ou ….) est “hg revert”. C’est à dire

  hg update -r Where-you-want-to-copy-to hg revert -r Where-you-want-to-copy-from file-you-want-to-copy ... hg ci 

Pour une raison quelconque, certains de mes collègues et moi-même trouvons cela TRÈS confus. “revert” == “copy” … est utile pour certains modèles d’utilisation, mais pas tous.

Nan. Mercurial fonctionne sur une base de modifications.

Mais vous pouvez faire une ” fusion factice ” où vous ignorez les modifications entrantes d’une des twigs. Avant de vous engager, vous pouvez alors rétablir les fichiers sélectionnés dans l’état souhaité:

 % HGMERGE=internal:local hg merge # keep my files % hg revert --rev other-branch a.txt # update a.txt to other branch % hg commit -m 'Dummy merge to pick a.txt from other-branch.' 

Peut-être que cela vous aidera un peu.

Je voudrais juste utiliser un outil externe comme vimdiff pour différencier les deux fichiers que je veux fusionner, puis les fusionner. L’avantage de ceci est que vous pouvez effectuer une édition sélective sur des parties du fichier. Par exemple:

 hg update -r branch-merging-to hg extdiff -p vimdiff -r branch-merging-from file-I-am-merging 

Pour ce faire, vous devez activer les outils externes dans votre fichier .hgrc, ce qui signifie simplement append ces lignes:

 [extensions] hgext.extdiff =