Community
Participate
Working Groups
It would be nice if the diffing(update,commit) process in a Team synchronization looks at the content of sourcecode. example: public class Foo { private void fooA(){ // ... } public Foo { // ... } } changes into: public class Foo { public Foo { // ... } private void fooA(){ // ... } } in this change there is no (no java-related) change. I think it would be very hard to implement a feature that can figure out, if there is a semantic diffrence. Unfortunatly i actually doesn't have time to implement it by myself, but i think that a JDT(JavaModel) based save,load and diff is possible the key to a real semantic ReleaseManagment. I hope that someone catches my idea and implement it in (possible Eclipse x.0 | (x>4)) ;-)
The compare editors do look at the semantics of the java files (Java Structure Compare), but we have never wanted to auto-merge using semantics of the file. This is however technically possible, the key is to provide a org.eclipse.compare.streamMergers for java files then change the CVS plugin to use the stream merger instead of the line-by-line servermerge. We don't have time for this either :)
The model-based merge support in Team does allow models to use model semantics to perform the merge. For Java, it is JDT that would need to provide an IStorageMerger that could merge Java files.
Here is a simple use case: merge java import declarations import Bar; import Foo; ... I insert a new import: import Bar; import Cherry; import Foo; And someone in my team released a change adding a different import: import Bar; import Lemon; import Foo; Today we have to manually resolve the conflict. Java merge could automatically produce the following: import Bar; import Cherry; import Lemon; import Foo; It's a real use case, happens quite frequently :-)