grsummary: handle non-hash ids when checking state Previously, a guest's state (localmods/syncok/unsynced) was computed by manually comparing the desired changeset id to the full hash of the checked-out revision, the tags, the bookmarks and the branch. This failed, for example, when the desired id was an abbreviated hash, or a tag. The current solution treats the desired id as a revset, and compares the returned node to the checked-out node. This is more robust: it allows the user to specify the desired changeset in any way that Mercurial recognizes, and the equality check no longer depends on the specification method.
Fix missing tags in output The reason is a Mercurial API change: Before, repo[None] returned the checked-out changectx. Now repo[None] returns the workingctx (which doesn't have tags), and repo['.'] returns the checked-out changectx. This fixes changes guestctx to repo['.']. Where the working directory parents are needed, a separate repo[None] lookup is made.
[state] do not change state of unmodified guest The idea is that users can fill the ``.hgguestrepo`` with a clever chengeid than a hex (a tag for example). In that case, maintaining the previous changeid: - reduces the .hgguestrepo diff - maintains the clever changeid (Merged by pnathan, fixed to run correctly).