Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [egit-dev] Support for logical model integration

Hi Travis,

In the currently released versions of EGit/JGit, the logical model support is available for comparisons, synchronizations and "replace with" purposes.
Merge, cherry-picks, reverts, rebases, ... are still only doing "file-by-file" merging and are thus oblivious of model providers that also provide their own mergers for the logical models they handle. Same goes with the merge tool.

Full support for the model provider's mergers is added through a series of patches currently awaiting for reviews on both projects' gerrits. Though this integration is fully tested on our side, we did this on a commercial provider we cannot disclose. EMF Compare aims at providing the same level of support... but it is still a work in progress. Do note that all of my EGit patches depend on the inclusion of the JGit ones, which explains why the hudson builds that were launched on them mostly fail.

If you wish to try out this support, please take a look at the following patches (even better if you can test your own merge provider with those patches applied and provide us with your feedback) :

JGit :
  • Allow callers to define and use a custom strategy for all merges (cherry-pick, revert, stash, rebase, ...). This allows us to "hijack" the default strategies "file-by-file" behavior.
  • Allow clients to sub-class the default "resolve" merge strategy. Solves the same issue : we need to handle more than one file at a time, yet still fall back to default when there are no model mergers. Sub-classing is the best mean to that end.
EGit :
  • Prevent non-blocking exception from being propagated as a blocker from the auto-staging hook of deletions. Model mergers will delete files outside of EGit's control, at a point where the index is locked. The auto-staging hook tries to lock said index, fails... and currently propagates that otherwise non-blocking failure as a show-stopper that fails the merge as a whole.
  • Introduce internal API to integrate EGit with Team merging. This introduces all of the necessary Subscriber and ResourceVariant implementations to create the MergeContext required by the model mergers.
  • Implement an Eclipse-specific workspace aware merging strategy for all of EGit operations involving merges (cherry-pick, rebase, ...). This one is the 'main' one that actually implements the changes in EGit to call the model mergers.
  • Do not ignore model-specific comparators when using the merge tool. This also adds the support for your own mergers when calling EGit's merge tool ("Team > merge tool" action on files that were marked as conflicting by the merge operations). Without this, even though your model mergers will mark files as conflicting, the merge tool would revert to file-by-file "textual" merging.
Feel free to tell us if there are still things missing from there for your own merge provider.

Regards,

Laurent Goubet
Obeo

On 25/03/2014 09:45, Travis London wrote:

Hello,

 

I was wondering what the current status is on logical model integration support?

 

I have a compare/merge provider that I would like to add a logical model provider for, and need to support eGit.

 

Thanks in advance,

Travis London



_______________________________________________
egit-dev mailing list
egit-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/egit-dev

begin:vcard
fn:Laurent Goubet
n:Goubet;Laurent
org:<a href="http://www.obeo.fr";>Obeo</a>
email;internet:laurent.goubet@xxxxxxx
url:http://www.obeo.fr
version:2.1
end:vcard


Back to the top