2015-07-16 1 views
0

J'ai travaillé sur un projet. Je suis en mesure de voir la différence entre mon projet et son parent (seul) avec:Dans Mercurial, comment "fusionner" avec le parent (unique) du commit?

hg kdiff3 

(Après que j'ai configuré « kdiff3 » comme indiqué here). Cependant, je veux pouvoir éditer mes dossiers, peut-être enlever quelques-uns de mes changements, éditer certains d'entre eux ou faire de nouveaux changements. Mais cette commande me montre seulement les différences, plutôt que de les laisser éditer. Si je tente:

hg merge 5861231e8335 

(Quand "5861231e8335" est le (seul) parent du répertoire de travail) Je reçois:

abort: merging with a working directory ancestor has no effect 

Alors, comment puis-je "fusionner" avec le parent? (de préférence en utilisant "kdiff3")

+0

Je ne comprends pas très bien ce que vous demandez. Pouvez-vous donner la sortie 'hg log -G' pour illustrer la situation? Voulez-vous simplement regrouper plusieurs changesets en un seul, c'est-à-dire combiner plusieurs changesets en un seul? Puis 'hg fold' pourrait être votre ami. Attention, c'est une fonction d'édition d'historique, donc vous changez l'histoire de façon permanente (faites une sauvegarde!) Et vous pourriez avoir besoin de changer (de force) la phase à brouiller avant de pouvoir le faire. – planetmaker

+0

Non, je veux juste voir les différences entre le répertoire de travail et son (seul) parent, mais d'une manière que je peux éditer mes fichiers. –

+0

vous voulez éditer le fichier de patchs comme cela serait créé par 'hg diff', donc entre votre état actuel de travail et la version non modifiée que vous avez extraite? Ou voyez-vous simplement l'état actuel du répertoire de travail et dans une seconde vue l'état non modifié de la révision parente? – planetmaker

Répondre

0

D'abord, vous avez mal compris ce que fait hg merge. Il fusionne les changesets de 2 parents. Il ne fusionne pas les modifications non validées.

Pour fusionner les modifications non validées dans la changeset actuelle pointe, vous voulez:

hg commit --amend 

qui remplace la pointe actuelle par une nouvelle.

Pour répondre à votre question sur l'édition dans un différenceur. Je ne suis au courant d'aucune méthode d'édition d'un tas de fichiers dans un différenceur de fichiers; C'est parce que l'ensemble des fichiers est copié dans le répertoire temporaire où il est évidemment inutile de les éditer. Vous pouvez cependant, diff et modifier un fichier à la fois car un fichier est différé en place sans copier dans le répertoire temp.

Mais sûrement, n'est-il pas préférable d'éditer des fichiers dans votre éditeur normal plutôt que dans un différenceur de fichiers? Sûrement, un peut éditer, mais seulement en dernier recours. OTOH, si vous utilisez l'astuce de visualisation diffs un fichier à la fois, il est possible d'éditer dans votre vrai éditeur, puis regarder les changements de différences dans le différenceur.

0

hg shelve vous permet de mettre temporairement de côté (sur une étagère) des parties du diff entre le répertoire de travail et son parent, de sorte qu'il vous donnera la partie "supprimer quelques modifications" de ce que vous voulez. Il ne vous permet pas de modifier, mais pourrait mettre ce que vous avez changé sur une étagère, puis réimplémenter le changement. Si vous voulez revenir à la modification d'origine, vous venez de mettre le nouveau changement sur une nouvelle étagère et de retirer le changement d'origine de son étagère.


Vous pouvez également créer une copie du changeset parent à l'aide hg export (ou hg clone et mise à jour du changeset parent, mais vous n'avez pas besoin de l'histoire pour cela), Une fois que vous avez obtenu votre copie, vous pouvez fusionner la copie du parent avec votre répertoire de travail en utilisant kdiff3 directement, en dehors de Mercurial.