

! comparator log messages start with a line identifing comparator used, and date ran, and then a 
! sequence of 3 (sometimes 4) lines describing the differences found by comparator. 

! line 1      summary             type (canonical, archive, etc), bundle, and version info 
! line 2      comparison          exact repositories being compared
! line 3      reason              brief description of the differnce found (or errors or exceptions in processing)
! line 4      extraDetail         a bit more details about errors found (variable, only a few messages have 4 lines)
!
! Rules on which messages are significant, or unexpected, are specified as three regex expresssions, 
! one for each of 
! the (first) three lines above (the forth, "extra detail" is not considered). All three rules, must 
! "match" all three 
! lines. By carefully crafting the rules, you can get some rule to apply too all comparator messages, 
! (e.g. ignore any message 
! stating the about.mappings files are different) or ignore only a certain message for a a certain 
! bundle/version (e.g. 
! ignore differences in build.xml file, but only in the org.eclipse.jst.jsf.doc.user bundle). 
! Note that the three parts of a comparator message must match all three parts of an exclude rule, 
! but for simplicity, if a rule part is empty or null, it is interpreted to mean "match anything" for 
! that message part. 

comparator.aboutmappings.summary = 
comparator.aboutmappings.comparison = 
comparator.aboutmappings.reason = ^In about\\.mappings, the property \"0\" has different values.*$

comparator.antversion.summary = 
comparator.antversion.comparison = 
comparator.antversion.reason = ^.*The manifest header \"Ant-Version\" has different values.*$

comparator.createdbyant.summary = 
comparator.createdbyant.comparison = 
comparator.createdbyant.reason = ^.*The manifest header \"Created-By\" has different values.*$

comparator.missingsignaturefile.summary = 
comparator.missingsignaturefile.comparison = 
comparator.missingsignaturefile.reason = ^.*Missing META-INF/ECLIPSEF\.SF.*$

comparator.testjar.summary = .*org.eclipse.jst.j2ee.tests.*
comparator.testjar.comparison = 
comparator.testjar.reason = ^IOException comparing.*sourceartifactTestData_ClasspathDependencyTests_Test1_jar.*$

comparator.testcorruptjar.summary = .*org.eclipse.wst.jsdt.core.tests.model.*
comparator.testcorruptjar.comparison = 
comparator.testcorruptjar.reason = ^IOException comparing.*sourceartifactworkspace_JavaSearch_corrupt_jar.*$

comparator.docbuildxml.summary = .*(\
org.eclipse.wst.xsl.sdk.documentation|\
org.eclipse.wst.xsl.doc|\
org.eclipse.wst.server.ui.doc.user|\
org.eclipse.jst.server.ui.doc.user|\
org.eclipse.jst.ws.jaxws.doc.user|\
org.eclipse.jst.jsf.doc.user|\
org.eclipse.wst.jsdt.doc|\
org.eclipse.wst.common.project.facet.doc.api\
).*$

comparator.docbuildxml.comparison = 
! exclude all doc, for now
!comparator.docbuildxml.reason = ^Binary file build\\.xml: sizes differ by.*$
