Me too, so +1 from me.
> If you are going to invest your time in DaisyDiff, feel free to take
> over completely its development (unless somebody has an objection). I
> already integrated
> my own extensions, so there is nothing more I need at the moment
> (although a port to Maven would be nice)
>
> Any other opinions from DaisyDiff committers? Speak up! :-)
Same feelings here. We also run a custom version of Daisydiff and actually for
a reason that origins in eclipse: Daisydiff ships a patched copy of
org.eclipse.compare. We cannot easily use the unpatached pristine version
because the testsuite brings up a lot of errors then.
So
1) first org.eclipse.compare would need to be opened up a bit so that Daisydiff
can reuse it as desired.
2) then Daisydiff can scrap its old copy of it
3) and finally you can make Daisydiff an OSGi bundle with a proper dependency to
org.eclipse.compare
I didn't do that myself yet, because I had another (way more trivial) patch
for org.eclipse.compare lying around for literally ages on
bugs.eclipse.org.
Now that patch is actually committed, so an attempt may be worthwhile,
especially if there's support from the EMF community.
FWIW, here's my notes for when I last had a look at porting Daisydiff to
pristine org.eclipse.compare:
org.eclipse.compare changes (Daisydiff ships a version for Eclipse 3.4).
Eclipse 3.4 -> 3.7
- rangedifferencer now in org.eclipse.compare.core
- LCS now has isCappingDisabled() (configurable)
- OldDifferencer: has gone
- AbstractRangeDifferenceFactory introduced
- RangeComparatorLCS
- findDifferences() has additional parameter AbstractRangeDifferenceFactory
- getDifferences() has additional parameter AbstractRangeDifferenceFactory
- RangeDifference: some fields renamed
- Rangedifferencer:
- has AbstractRangeDifferenceFactory
- many methods are overloaded with additional AbstractRangeDifferenceFactory
parameter and use it
- isUseOldDifferencer has gone
Eclipse 3.4 -> Daisydiff
- LCSSettings introduced to make hardcoded options configurable
- explicitly uses OldDifferencer in TextOnlyComparator (via
LCSSettings.setUseGreedyMethod and RangeDifferencer.findDifferences()
- POW_LIMIT not necessary anymore? Always uses default eclipse value
- TOO_LONG configured by TextOnlyComparator to (150*150) instead of
100000000.0
- setUseGreedyMethod not really possible since OldDifferencer not available
anymore
=> maybe we can always use the plain eclipse LCS settings, verify with
testcases
BIG PROBLEM:
- no way to reference ComparePlugin.getDefault() for isCappingDisabled()
without OSGi running
=> must fix LCS.isCappingDisabled() somehow
PROBLEMS:
- RangeDifference has package-private constructors! And no public
AbstractRangeDifferenceFactory available! => Reflection
- LCS needs org.NLS (org.eclipse.osgi bundle)
- ComparePlugin (LCS.isCappingDisabled) needs org.eclipse.core.runtime.Plugin
- IProgressMonitor needed, but now in org.eclipse.equinox.common
Cheers
Carsten