diff -r 5cccb9f811d0 -r 094f448dc1f0 VersionDiffBrowser.st --- a/VersionDiffBrowser.st Tue Oct 30 16:03:40 2012 +0100 +++ b/VersionDiffBrowser.st Tue Oct 30 16:26:38 2012 +0100 @@ -741,17 +741,30 @@ openOnDiffSet:diffSet labelA:aLabelA labelB:aLabelB title:ignoredTitle ^ self - openOnDiffSet:diffSet labelA:aLabelA labelB:aLabelB title:ignoredTitle - ignoreExtensions:false + openOnDiffSet:diffSet + labelA:aLabelA labelB:aLabelB + title:ignoredTitle + ignoreExtensions:false + ignoreVersionMethods:false "Modified: / 12-09-2011 / 11:52:44 / cg" ! -openOnDiffSet:diffSet labelA:aLabelA labelB:aLabelB title:ignoredTitle ignoreExtensions:aBoolean +openOnDiffSet:diffSet labelA:aLabelA labelB:aLabelB title:ignoredTitle ignoreExtensions:ignoreExtensionsBoolean + ^ self + openOnDiffSet:diffSet + labelA:aLabelA labelB:aLabelB + title:ignoredTitle + ignoreExtensions:ignoreExtensionsBoolean + ignoreVersionMethods:false +! + +openOnDiffSet:diffSet labelA:aLabelA labelB:aLabelB title:ignoredTitle ignoreExtensions:ignoreExtensionsBoolean ignoreVersionMethods:ignoreVersionMethodsBoolean |theBrowser| theBrowser := self new. - theBrowser ignoreExtensions:aBoolean. + theBrowser ignoreExtensions:ignoreExtensionsBoolean. + theBrowser ignoreVersionMethods:ignoreVersionMethodsBoolean. theBrowser allButOpen. theBrowser setupForDiffSet:diffSet labelA:aLabelA labelB:aLabelB. theBrowser window label:ignoredTitle. @@ -864,6 +877,16 @@ "Modified: / 06-03-2012 / 15:37:32 / cg" ! +ignoreVersionMethods:aBoolean + "if true, version methods (version and version_XXX) are suppressed. + Ignoring is useful when comparing for real code changes. + the default is false" + + self includeVersionMethods:aBoolean not + + "Modified: / 06-03-2012 / 15:37:32 / cg" +! + selectedChangeInA " gets the selected method change for the 'method only in version A'. @@ -1874,41 +1897,56 @@ updateLists |classChangeSet listOnlyInA listOnlyInB listChanged printStringGenerator sortBlockForChangeLists filteredList - isIgnoredChange numIgnoredExtensions| + isIgnoredChange numIgnoredExtensions numIgnoredVersionMethods + info needFilter| classChangeSet := self classChangeSet. printStringGenerator := [:aChange | self printStringForChange:aChange]. sortBlockForChangeLists := [:a :b | (printStringGenerator value:a) < (printStringGenerator value:b)]. - numIgnoredExtensions := 0. + numIgnoredExtensions := numIgnoredVersionMethods := 0. + needFilter := self includeExtensions not + or:[self includeCategoryChanges not + or:[self includeVersionMethods not]]. isIgnoredChange := [:change | |packageOfMethodInChange packageOfMethodInImage changeMethod ignored| ignored := false. - (change isMethodCodeChange and:[ self includeExtensions not ]) ifTrue:[ - packageOfMethodInChange := change package. - (packageOfMethodInChange notNil - and:[ packageOfMethodInChange ~= PackageId noProjectID - and:[ packageOfMethodInChange ~= change changeClass package ]]) ifTrue:[ - ignored := true - ]. - - changeMethod := change changeMethod. - changeMethod notNil ifTrue:[ - packageOfMethodInImage := changeMethod package. - (true "packageOfMethodInImage notNil" - and:[ packageOfMethodInImage ~= PackageId noProjectID - and:[ packageOfMethodInImage ~= changeMethod mclass package ]]) ifTrue:[ + change isMethodCodeChange ifTrue:[ + self includeExtensions ifFalse:[ + packageOfMethodInChange := change package. + (packageOfMethodInChange notNil + and:[ packageOfMethodInChange ~= PackageId noProjectID + and:[ packageOfMethodInChange ~= change changeClass package ]]) ifTrue:[ ignored := true ]. + + changeMethod := change changeMethod. + changeMethod notNil ifTrue:[ + packageOfMethodInImage := changeMethod package. + (true "packageOfMethodInImage notNil" + and:[ packageOfMethodInImage ~= PackageId noProjectID + and:[ packageOfMethodInImage ~= changeMethod mclass package ]]) ifTrue:[ + ignored := true + ]. + ]. + numIgnoredExtensions := numIgnoredExtensions + (ignored ifTrue:[1] ifFalse:[0]). ]. - numIgnoredExtensions := numIgnoredExtensions + (ignored ifTrue:[1] ifFalse:[0]). + self includeVersionMethods ifFalse:[ + (change isMethodChangeForVersionMethod + or:[ change isMethodChangeForExtensionsVersionMethod ]) ifTrue:[ + ignored := true. + numIgnoredVersionMethods := numIgnoredVersionMethods + 1 + ]. + ]. ] ifFalse:[ - (change isMethodCategoryChange and:[self includeCategoryChanges not]) ifTrue:[ - ignored := true + change isMethodCategoryChange ifTrue:[ + self includeCategoryChanges ifFalse:[ + ignored := true + ] ]. ]. ignored. @@ -1919,7 +1957,7 @@ classChangeSet notNil ifTrue:[ "/ classChangeSet methodsOnlyInA sort:sortBlockForChangeLists. filteredList := classChangeSet methodsOnlyInA. - (self includeExtensions not or:[self includeCategoryChanges not]) ifTrue:[ + needFilter ifTrue:[ filteredList := filteredList reject:isIgnoredChange. ]. listOnlyInA addAll: (filteredList collect:printStringGenerator). @@ -1931,7 +1969,7 @@ classChangeSet notNil ifTrue:[ "/ classChangeSet methodsOnlyInB sort:sortBlockForChangeLists. filteredList := classChangeSet methodsOnlyInB. - (self includeExtensions not or:[self includeCategoryChanges not]) ifTrue:[ + needFilter ifTrue:[ filteredList := filteredList reject:isIgnoredChange. ]. listOnlyInB addAll: (filteredList collect:printStringGenerator). @@ -1943,7 +1981,7 @@ classChangeSet notNil ifTrue:[ "/ classChangeSet methodsChanged sort:[:a :b | sortBlockForChangeLists value:a first value:b first]. filteredList := classChangeSet methodsChanged. - (self includeExtensions not or:[self includeCategoryChanges not]) ifTrue:[ + needFilter ifTrue:[ filteredList := filteredList reject:[:entry | isIgnoredChange value:entry first]. ]. listChanged addAll: (filteredList collect:[:entry| printStringGenerator value:(entry first)]). @@ -1957,11 +1995,14 @@ and: [(listOnlyInA notEmpty or:[listOnlyInB notEmpty])]) not. + info := ''. numIgnoredExtensions ~~ 0 ifTrue:[ - self infoHolder value:('%1 extension methods ignored.' bindWith:numIgnoredExtensions) - ] ifFalse:[ - self infoHolder value:nil + info := info , ('%1 extension methods ignored. ' bindWith:numIgnoredExtensions). ]. + numIgnoredVersionMethods ~~ 0 ifTrue:[ + info := info , ('%1 version methods ignored.' bindWith:numIgnoredVersionMethods). + ]. + self infoHolder value:info "Modified: / 17-07-2012 / 18:34:36 / cg" ! ! @@ -2409,9 +2450,9 @@ !VersionDiffBrowser class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.109 2012-10-30 14:26:33 cg Exp $' + ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.110 2012-10-30 15:26:38 cg Exp $' ! version_CVS - ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.109 2012-10-30 14:26:33 cg Exp $' + ^ '$Header: /cvs/stx/stx/libtool/VersionDiffBrowser.st,v 1.110 2012-10-30 15:26:38 cg Exp $' ! !