When we settled on editor semantics, we agreed to make the driving of
the editor depth-first. But then later, we agreed to allow one
special exception: the "postfix text-delta" method of driving an
This method allows you to close a dir_baton *without* closing all of
its children's file_batons. The idea is that after you close all
dir_batons (including the root dir_baton), you can then send all the
textdeltas at the very end.
The point of this technique was to allow commits to be rejected by the
repository at an early stage, before lots of file data is sent. A
speed optimization for commits.
Irony #1: after working hard to make the commit-driver send things in
postfix text-delta style, we're currently *ignoring* this
optimization. We don't attempt to merge() until the entire
transaction has been received. Doh! We need a heuristic that calls
merge() repeatedly while the transaction is being assembled, before
any text-deltas are sent.
Irony #2: the client-side commit/update editor is all set up to
receive postfix text-deltas, yet none of its drivers ever use this
style. Why? Because the client never summarily rejects an edit; it
just marks things as 'conflicted' and then moves on. There's no
Whatever the case, I've added this optimization (#1 above) to the
"todo" area in notes/alpha-checklist.
Received on Sat Oct 21 14:36:26 2006