jackrabbit-oak-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Thomas Mueller <muel...@adobe.com>
Subject Re: Handling copies and moves with tree diffs
Date Tue, 27 Nov 2012 12:39:21 GMT

>1) For each tree node we keep track of its original location.

> However, I think recording the path is not sufficient. We need to record
>the parent node.

I guess you don't mean remembering the original path of the parent?
keeping track of the original location of the parent (let's say "/test")
instead of keeping track of the original location of the node (let's say
"/test/node") is just keeping less information, and can't be better I

>2) We don't need optimal handling of all possible corner cases.

As long as it always works correctly that's fine. But proving that a diff
based solution always works is quite tricky in my view. I'm a bit afraid
that we build a solution that is hard to understand and maintain, tricky
to get right _and_ fast at the same time.

> Currently we work around this problem by mapping each
> higher-level copy and move operation to separate branch commits that
> contain just that operation, which isn't too ideal.

Could you tell me what problems you see with this workaround? As far as I
know, move and copy are not common operations, do we need to optimize for

> in oak-core we only keep track of tree states instead of change logs ...
> This works pretty well in general and avoids a lot of extra complexity

I have to admit I didn't recently read the source code of this area, but
conceptually I have the feeling that keeping track of the change log is
actually quite simple (keeping an simple list of change operations), and
trying to build the change log from the state sounds like a lot more
complex to me. What is in your view the extra complexity in keeping a list
of change operations?


View raw message