[ 
https://issues.apache.org/jira/browse/OAK-464?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13511456#comment-13511456
 ] 

Thomas Mueller commented on OAK-464:
------------------------------------

> Please go back to 
> https://issues.apache.org/jira/browse/OAK-464?focusedCommentId=13511308

Sorry, what should I read again? As far as I see, this is my own comment. 
Instead of linking to a previous comment, I suggest to quote instead.

> That particular functionality is already there in the Microkernel.

It might be implemented in one MicroKernel implementation in some specific way. 
But if we add rebase to the MicroKernel API, would need to be implemented it in 
multiple MicroKernel implementations. As I said, I would prefer it it is only 
implemented once in oak-core. Having multiple implementations (which would be 
needed if implemented in the MicroKernel API) would lead to (a) unnecessarily 
complexity and (b) easily gets into bugs and incompatibilities.

> Making it more explicit will by no means increase complexity but rather to 
> the contrary

It would increase complexity because it would need to be implemented multiple 
times instead of just once.

> It will help clarifying a rather obscure part of the current Microkernel 
> implementation: namely how conflicts are handled.

How conflicts are handled in the MicroKernel implementation should be 
documented in detail, that is true. This doesn't mean that we need to add a new 
method to the MicroKernel API and to each MicroKernel implementation however.

Instead of adding moving complexity into the MicroKernel implementations, I 
suggest to implement it in oak-core. One solution is to use a "list of 
operations" in oak-core instead of doing a 3-way-merge. 

Another solution is to implement what Jukka described above ("The 
implementation would be equivalent to something like this:") in oak-core, and 
only extend the MicroKernel API specification to support getting the commit for 
a commit in a branch (so that Jukkas "getBranchCommitsUntil" can be implemented 
in oak-core).

                
> RootImpl.rebase() doesn't handle move operations correctly
> ----------------------------------------------------------
>
>                 Key: OAK-464
>                 URL: https://issues.apache.org/jira/browse/OAK-464
>             Project: Jackrabbit Oak
>          Issue Type: Bug
>            Reporter: Michael Dürig
>
> Doing {{RootImpl.rebase()}} causes moves to be changed to remove followed by 
> add. Which causes moves of large sub trees to become very expensive.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to