Update on commit refactoring work

Ian Clatworthy ian.clatworthy at internode.on.net
Thu Jun 28 02:37:58 BST 2007


Rob,

I made a lot of progress on this yesterday though nothing that I'm ready
to commit to production code just yet. commit.py, repository.py and
inventory.py really is quite a tangled web ...

I have untangled that a bit, particularly getting non-inventory stuff
out of inventory.py. FWIW, I'm currently experimenting with a new
iter_commitable iterator on trees along the lines of what Aaron
suggested to me in 0.17. In the first cut, it simply calls iter_changes
walking everything. It isn't quite what you're after I suspect but it
will let me measure potential performance gains, on the non-merge case
initially, before generalising it to multiple parents, tuning it, etc. I
need to dig this morning on MemoryTrees as it's missing some things
needed for the commit regression tests (using iter_commitable) to pass.

Using Martin's document as a guide, I think things are moving forward
well. But I need some more clarity in my own mind about how all the
pieces will ultimately interact. Once I have that, I'll be more
confident the progress is indeed along the right path (and not just
sideways). I'll have a lot of questions once the above is going,
particularly around the right order to bring the changes into the code base.

Right now, my main one is around deprecating _read_tree_state and
_forget_tree_state in inventory.py.  These are used in change_entry()
inside transform.py (which isn't used anywhere in the core?). Any ideas
on whether than function can be deprecated or removed?

Ian C.



More information about the bazaar mailing list