Search code examples
mercurialshelving

Mercurial: move MQ patch to shelve?


Emacs VC mode show changes in directory state but ignore MQ changes...

I want to remove patch from queue and apply it on working directory.

This is possible with usual patch command, but it require passing some arguments and paths to utilities (which is inconvenient as not all environment allow autocompletion).

I expect hg built-in solution. Ideally - to move patch to shelve.


Solution

  • Moving changes from MQ to working tree and forgetting it:

    $ hg qgoto my.patch
    $ hg qpop
    $ hg qdel --keep my.patch
    $ patch -p1 .hg/patches/my.patch
    $ rm .hg/patches/my.patch
    

    In Emacs to see difference in top MQ patches I find command C-u C-x v D qparent RET qtip RET which is:

    $ hg diff -r qparent:qtip
    

    or shorter:

    $ hg diff -r qparent
    

    or:

    $ hg qdiff
    

    but latest command doesn't present in Emacs VC mode.