Search code examples
mercurial

Mercurial: how do I revert to a particular revision?


I'm working on a live server. I've updated to tip and it's caused problems: I need to revert back to a particular changeset (388) where things were OK.

I have no changes of any value on the server, the local changeset does not matter at all. In fact I actually want to kill any local accidental changes or merges so as not to confuse things.

How do I revert to a particular changeset and kill any local changes? Is it something to do with:

hg revert 

---- UPDATE ---

To clarify, what I would like to do is first revert everything locally to changeset 388, and then ensure that my local repo is in such a state that when I do

hg status

I get no output. Otherwise I have a nasty feeling that when I next pull the tip, there will be conflicts to deal with - which I want to avoid, because the local changes are of no value.

---- UPDATE ---

For anyone else in this situation, what eventually fixed it for me was:

rm -rf <repo_dir>
hg clone http://repository
hg update -r 388

That will kill all your local changes, so proceed with caution (but that's what I wanted in this case).


Solution

  • server:
    - ..
    - rev 386
    - rev 387
    - rev 388
    - rev 389
    
    clone to production
    
    -- testing stuff, it doesn't work!
    -- panic!
    -- rev 390 (in panic)
    -- rev 391 (in panic)
    -- cool down, thinking, need to go back to 388
    -- one way: hg update -C -rev 388 (to keep 390, 391)
    -- other way: rm -rf dir (to discard 390, 391)
    -- hg clone http://server/hg
    -- cd dir
    -- hg update 388 
    -- testing, now works
    

    There is also a wonderful Purge extension. Very solid stuff, it deletes all untracked files from working directory.