The difference between update and merge (was: Completely baffled)

Isaac Jurado diptongo at gmail.com
Tue Dec 6 13:37:37 CST 2011


On Tue, Dec 6, 2011 at 10:53 AM, Martin Geisler <mg at aragost.com> wrote:
>
>> Unless there is something I don't know about, updating a dirty
>> working copy is only one way.
>
> You can use 'hg resolve' after the update to re-do the merge and even
> resurrect the old version of your modified files.
>
> I haven't tested this right now, but I would expect
>
>  hg resolve --all --tool internal:local
>  hg update OLDREV
>
> to get you safely back to where you were before you ran 'hg update NEW'.
> Please let us know if you test this.

Well, either one of us is not understanding the other or I wasn't clear
enough from the beginning.  Take the following command sequence:

    hg init killme
    cd killme
    cat >afile <<KAN
    asdf asdf asdf asdf asdf a
    asdf asdf asdf asdf
    poiua pioaiusdf puasf -lqwer
    qer -.qmwe-.q,mweer m
    qwer-,m qwew-r.,m
    KAN
    hg add afile
    hg commit -m "A"
    sed '2 c jjjjjjjjjjjjjjjjjjjjj' afile >bfile
    mv bfile afile
    hg commit -m "AA"
    hg update 0
    sed '2 c kkkkkkkkkkkkkkkkkkkkkkkk' afile >bfile
    cp bfile afile
    hg update

After the last command the merge tool should be launched.  Now, for the
sake of the exercise, screw it up by just editing the conflicting line
manually (in kdiff3, by writing something like "foobar" after selecting
between local, base and other).

And now, imagining that bfile does not exist, tell me how would you
recover afile to have the same contents as bfile.

Cheers.

-- 
Isaac Jurado

"The noblest pleasure is the joy of understanding"
Leonardo da Vinci


More information about the Mercurial mailing list