making memctx more generally useful

Steve Borho steve at borho.org
Wed Jan 2 14:31:01 CST 2013


Hello,

I am in the middle of adding a record-like hunk selection feature to the
TortoiseHg commit tool; using a patch based memctx to avoid having to
repeatedly re-write working copy files and potentially bungling the
dirstate.

A problem that I have encountered (and based on a quick chat on IRC I am
not the first) is that memctx.commit() directly calls into
localrepo.commitctx() bypassing all the logic in localrepo.commit() which
knows about subrepos, bookmarks, merge state, hooks, etc.

For the short term; I am duplicating the functionality of
localrepo.commit() within my partial commit function, but it seems like
there is a lot of room for improvement here to make the localrepo.commit()
functionality more reachable.

Option #1 (minimal)

add an optional getcctxfn=context.workingctx argument to localrepo.commit()
so callers can inject their own commit context callback; using the changes
list and other arguments that localrepo.commit() discovers

Option #2

Move localrepo.commit() functionality into workingctx, make memctx derive
from workingctx

Option #3

Split localrepo.commit() into multiple functions which can be called a la
carte

Preferences?  Other options?

-- 
Steve Borho
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20130102/7d80fc91/attachment.html>


More information about the Mercurial-devel mailing list