[PATCH RFC] reflog: adds a reflog extension

Jordi Gutiérrez Hermoso jordigh at octave.org
Sun Oct 5 20:54:09 CDT 2014


On Wed, 2014-10-01 at 18:45 -0700, Durham Goode wrote:
> # HG changeset patch
> # User Durham Goode <durham at fb.com>
> # Date 1412200597 25200
> #      Wed Oct 01 14:56:37 2014 -0700
> # Node ID 942be96848993cf7ab5ed529db9c1f39c6d43c30
> # Parent  939ce500c92a3dcc0e10815242361ff70a6fcae9
> reflog: adds a reflog extension
> 
> This adds an extension that tracks the locations of the working copy and
> bookmarks over time. It's still a proof of concept, but I wanted to throw
> it out there to start the bike shedding early (like finding a better name
> than 'reflog'). We're close enough to the release that I don't think it should
> go in before that.
> 
> Running `hg reflog` by default shows the previous locations of the working
> copy (most recent first).
> 
> ~/myrepo> hg reflog
> 35a5fcfee452 > rebase -d master
> 32eee5e2d406 > up .^
> b5d6dab4f900 > up foo -C
> 
> Specifying a bookmark name shows the locations of that bookmark over time.
> 
> ~/myrepo> hg reflog foo
> d1a696044ec0 > rebase -d master
> 35a5fcfee452 > rebase -d master
> 32eee5e2d406 > book foo -f
> 
> --date and --user flags exist to show more information about each entry.
> 
> ~/myrepo> hg reflog foo --user --date
> d1a696044ec0 durham 2014-10-01 18:32:14 > rebase -d master
> 35a5fcfee452 durham 2014-10-01 17:28:54 > rebase -d master
> 32eee5e2d406 durham 2014-10-01 17:28:30 > book foo -f

I'm a little bothered by the UI. Like you said in a later email, the
goal here is to undo bookmark or pwd motions. The fact that the
information to undo is in a log should be mostly irrelevant for the
user. In that case, I propose that what you're currently calling
`reflog` should be something like `debugstatelog` and the `bookmark`
and `update` commands should use this statelog to grow --undo and
possibly --redo flags, e.g.

    # Move bookmark master to whatever state it was before its current
    # state
    hg bookmark master --undo

    # Move whatever was the last moved bookmark to whatever its
    # previous state was
    hg bookmark --undo

    # Move dirstate and active bookmark to whatever they were before
    # the last time an `update` command was invoked
    hg update --undo

Can we use your extension or perhaps blackbox to also provide an
--undo flag for `update`? Should your extension be rolled into
blackbox?




More information about the Mercurial-devel mailing list