making memctx more generally useful

Pierre-Yves David pierre-yves.david at logilab.fr
Fri Jan 4 12:37:09 CST 2013


On Wed, Jan 02, 2013 at 02:31:01PM -0600, Steve Borho wrote:
> 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.

I'm very happy to see this moving. With this problem solved we could ditch the
temporary commit of amend.

> 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


- Moving commit logic outside local repo would be a net win
- I'm not sure #2 solve alone the amend problem. We needs to:
  1) copy "." into a memctx,
  2) apply commit logic with content from the wctx to our memctx,

A mix of #2 and #3 is probably the way to 



-- 
Pierre-Yves David

http://www.logilab.fr/

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20130104/cb40b102/attachment.pgp>


More information about the Mercurial-devel mailing list