Heya, Joel, noticed the new version of 'update' that you added, that
takes a revision argument. Can you describe what the intended
semantics of this are?
In my head, the purpose of update is always to "move" your local
changes so that they hang off of a different committed version -- it
changes what you're making changes relative to. The algorithm is to
merge3 the working directory with the target revision using the
current base revision as the common ancestor. I'm not sure I
understand what's happening in your code, but it doesn't look like
it's doing that when a revision argument is applied; is it actually
doing like a merge-into-working directory or something?