--- a/SourceCodeManagerUtilities.st Tue Oct 30 15:35:50 2012 +0100
+++ b/SourceCodeManagerUtilities.st Tue Oct 30 15:36:42 2012 +0100
@@ -962,9 +962,7 @@
If askForRevision is false, check-out the newest version.
Return a changeSet or nil (if any error occurred)"
- |resources directory module file aStream sourceToLoad rev msg newestRev |
-
- resources := self classResources.
+ |directory module file aStream sourceToLoad rev msg newestRev |
directory := packageToCheckOut asPackageId directory.
module := packageToCheckOut asPackageId module.
@@ -1027,9 +1025,8 @@
!
checkForExistingModule:module directory:directory container:containerFileName usingManager:mgr allowCreate:allowCreate
- |resources moduleName directoryName containerName|
-
- resources := self classResources.
+ |moduleName directoryName containerName|
+
moduleName := module allBold.
directoryName := directory allBold.
containerName := containerFileName allBold.
@@ -1063,9 +1060,8 @@
!
checkForExistingModule:module directory:directory usingManager:mgr allowCreate:allowCreate
- |resources moduleNameBold directoryNameBold|
-
- resources := self classResources.
+ |moduleNameBold directoryNameBold|
+
moduleNameBold := module allBold.
directoryNameBold := directory allBold.
@@ -1102,10 +1098,9 @@
!
checkForExistingModule:module usingManager:mgr allowCreate:allowCreate
- |resources moduleName answer|
+ |moduleName answer|
(mgr checkForExistingModule:module) ifFalse:[
- resources := self classResources.
moduleName := module allBold.
allowCreate ifFalse:[
@@ -1158,7 +1153,7 @@
"check-out a class from the source repository.
If askForRevision is false, check-out the newest version."
- |mgr resources sourceInfo
+ |mgr sourceInfo
currentClass inChangeSet
aStream sourceToLoad currentSource rev revString
nm msg rev2 newestRev
@@ -1170,8 +1165,6 @@
aClass isNil ifTrue:[self error:'nil class'].
- resources := self classResources.
-
currentClass := aClass theNonMetaclass.
nm := currentClass name.
@@ -1653,8 +1646,7 @@
"check-out a class from the source repository.
If askForRevision is false, check-out the newest version."
- |resources
- inChangeSet extensionMethods
+ |inChangeSet extensionMethods
rev msg
listHere listRep diffSet
changed onlyHere onlyInRep answer labels values singleChangeSelector
@@ -1663,8 +1655,6 @@
listRep := self changeSetForExtensionMethodsForPackage:packageToCheckOut askForRevision:askForRevision usingManager:aSourceCodeManager.
listRep isNil ifTrue:[ ^self ].
- resources := self classResources.
-
self activityNotification:'generating diffSet...'.
extensionMethods := OrderedCollection new.
@@ -1841,12 +1831,10 @@
"open a diff-textView comparing the current (in-image) version
against its orgiginal version found in the repository."
- |classToCompare resources brwsr
+ |classToCompare brwsr
aStream comparedSource currentSource rev revString thisRevString mgr
nm msg revisionInClass newestRev versionsAreTheSame|
- resources := self classResources.
-
classToCompare := aClass theNonMetaclass.
nm := classToCompare name.
@@ -2033,7 +2021,7 @@
labelA:'Repository ("',aSymbolicName,'")'
labelB:'Image'
title:('Differences of %1' bindWith:aProject)
- ignoreExtensions:false.
+ ignoreExtensions:true.
"Modified: / 12-09-2011 / 11:56:01 / cg"
!
@@ -2057,11 +2045,8 @@
"let user specify the source-repository values for aClass.
Return false, if failed."
- |resources|
-
aManager isNil ifTrue:[^ false].
- resources := self classResources.
^ self
defineSourceContainerForClass:aClass
usingManager:aManager
@@ -2096,12 +2081,11 @@
"oldModule oldPackage" oldFileName
module directory fileName nameSpace nameSpacePrefix
info project nm creatingNew msg
- answer doCheckinWithoutAsking forceCheckIn resources rslt note
+ answer doCheckinWithoutAsking forceCheckIn rslt note
requiredPackage|
mgr isNil ifTrue:[^ false].
- resources := self classResources.
aClass isLoaded ifFalse:[
self warn:(resources string:'Please load the %1-class first' with:aClass name).
^ false.
@@ -2424,17 +2408,14 @@
|classesInImage filesInImage module directory perProjectInfo
classesNotInRepository filesNotInImage classesDeletedInRepository
- classesModifiedInImage classesNotReallyModified classesReallyModified classesModifiedInRepository
+ classesModifiedInImage classesNotReallyModified classesReallyModified classesNewerInRepository
classesAddedInImage extensionMethods extensionsInImage extensionsInRepository extensionDiffs
- box doCleanup resources diffSet def autoloadedFilesNotInImage
- autoloadedClassesInImage autoloadedFilesInImage|
-
- resources := self classResources.
+ box doCleanup diffSet def autoloadedFilesNotInImage
+ autoloadedClassesInImage autoloadedFilesInImage versionMethodsAndDoitsRejected|
module := aProject asPackageId module.
directory := aProject asPackageId directory.
-self halt.
(aDateOrNilForNewest isNil and:[ aTagOrNil notNil ]) ifTrue:[
perProjectInfo := SourceCodeManager revisionsInModule:module directory:directory taggedAs:aTagOrNil.
] ifFalse:[
@@ -2444,6 +2425,15 @@
perProjectInfo := perProjectInfo select:[:info | info key asFilename hasSuffix:'st'].
perProjectInfo := Dictionary withAssociations:perProjectInfo.
+ "/ to ignore version_xxx methods
+ versionMethodsAndDoitsRejected :=
+ [:aChangeSet |
+ aChangeSet reject:[:chg |
+ chg isMethodChangeForVersionMethod
+ or:[chg isMethodChangeForExtensionsVersionMethod
+ or:[chg isDoIt]]]
+ ].
+
classesInImage := Smalltalk allClassesInPackage:aProject.
autoloadedClassesInImage := classesInImage reject:[:cls | cls isLoaded].
classesInImage := classesInImage select:[:cls | cls isLoaded and:[cls isPrivate not]].
@@ -2461,9 +2451,16 @@
classesModifiedInImage := classesInImage select:[:cls | ChangeSet current includesChangeForClassOrMetaclass:cls].
classesModifiedInImage := classesModifiedInImage \ classesNotInRepository.
- classesModifiedInRepository := classesInImage select:[:cls | |v|
- v := (perProjectInfo at:cls classBaseFilename ifAbsent:nil).
- v notNil and:[ cls isLoaded and:[ v > cls revision ]]].
+ classesNewerInRepository := classesInImage
+ select:[:cls |
+ |v clsRevision|
+
+ v := (perProjectInfo at:cls classBaseFilename ifAbsent:nil).
+ v notNil
+ and:[ cls isLoaded
+ and:[ (clsRevision := cls revision) notNil
+ and:[ v > clsRevision ]]]
+ ].
"/ stupid: as we do not have any revision information for extensions (sigh);
"/ we must checkout and look at the extension.st contents, to see if it has changed.
@@ -2475,22 +2472,27 @@
|s extensionsRevision|
extensionsRevision := perProjectInfo at:'extensions.st' ifAbsent:#newest.
- s := SourceCodeManager
- streamForClass:nil fileName:'extensions.st' revision:extensionsRevision
- directory:directory module:module cache:true.
- s isNil ifTrue:[
- extensionsInRepository := ChangeSet new.
- ] ifFalse:[
- extensionsInRepository := ChangeSet fromStream:s.
- s close.
+ [
+ s := SourceCodeManager
+ streamForClass:nil fileName:'extensions.st' revision:extensionsRevision
+ directory:directory module:module cache:true.
+ s notNil ifTrue:[
+ extensionsInRepository := ChangeSet fromStream:s.
+ ].
+ ] ensure:[
+ s notNil ifTrue:[s close]
].
+ extensionsInRepository isNil ifTrue:[extensionsInRepository := ChangeSet new].
+
+ "/ ignore package doIts and all extensionVersion_xxx methods
+ extensionsInRepository := versionMethodsAndDoitsRejected value:extensionsInRepository.
] value.
extensionDiffs := extensionsInRepository diffSetsAgainst:extensionsInImage.
diffSet := extensionDiffs copy.
(aDateOrNilForNewest isNil and:[aTagOrNil isNil]) ifTrue:[
- "/ we could do the same as above for each class.
+ "/ we could do the same as below for each class.
"/ however - as we do have change-info and revision info, we can avoid checking out
"/ for all classes which are not changed and which have the same version info.
classesModifiedInImage notEmpty ifTrue:[
@@ -2499,13 +2501,21 @@
|currentVersion repositoryVersion s stFile diffs|
stFile := eachChangedClass classBaseFilename.
- s := SourceCodeManager
- streamForClass:nil fileName:stFile revision:#newest
- directory:directory module:module cache:true.
- repositoryVersion := ChangeSet fromStream:s.
- s close.
-
- currentVersion := ChangeSet forExistingClass:eachChangedClass.
+ [
+ s := SourceCodeManager
+ streamForClass:nil fileName:stFile revision:#newest
+ directory:directory module:module cache:true.
+ s notNil ifTrue:[
+ repositoryVersion := ChangeSet fromStream:s.
+ ].
+ ] ensure:[
+ s notNil ifTrue:[s close].
+ ].
+ repositoryVersion isNil ifTrue:[ repositoryVersion := ChangeSet new ].
+ repositoryVersion := versionMethodsAndDoitsRejected value:repositoryVersion.
+
+ currentVersion := ChangeSet forExistingClass:eachChangedClass withExtensions:false withLooseMethods:true.
+ currentVersion := versionMethodsAndDoitsRejected value:currentVersion.
diffs := repositoryVersion diffSetsAgainst:currentVersion .
diffSet addDiffSet:diffs.
diffs notEmpty
@@ -2519,19 +2529,26 @@
|currentVersion repositoryVersion s stFile stRevision diffs|
stFile := eachClass classBaseFilename.
- stRevision := perProjectInfo at:stFile ifAbsent:#newest.
-
- s := SourceCodeManager
- streamForClass:nil fileName:stFile revision:stRevision
- directory:directory module:module cache:true.
- s isNil ifTrue:[
+ stRevision := perProjectInfo at:stFile ifAbsent:nil.
+ stRevision notNil ifTrue:[
+ [
+ s := SourceCodeManager
+ streamForClass:nil fileName:stFile revision:stRevision
+ directory:directory module:module cache:true.
+ s notNil ifTrue:[
+ repositoryVersion := ChangeSet fromStream:s.
+ ].
+ ] ensure:[
+ s notNil ifTrue:[s close].
+ ].
+ ].
+ repositoryVersion isNil ifTrue:[
repositoryVersion := ChangeSet new.
- ] ifFalse:[
- repositoryVersion := ChangeSet fromStream:s.
- s close.
].
-
- currentVersion := ChangeSet forExistingClass:eachClass.
+ repositoryVersion := versionMethodsAndDoitsRejected value:repositoryVersion.
+
+ currentVersion := ChangeSet forExistingClass:eachClass withExtensions:false withLooseMethods:true.
+ currentVersion := versionMethodsAndDoitsRejected value:currentVersion.
diffs := repositoryVersion diffSetsAgainst:currentVersion .
diffSet addDiffSet:diffs.
diffs notEmpty
@@ -2562,29 +2579,37 @@
(filesNotInImage \ autoloadedFilesNotInImage) do:[:eachSTFile |
|s chgSet classDefinitions|
- s := SourceCodeManager
- streamForClass:nil fileName:eachSTFile revision:#newest directory:directory module:module cache:true.
- chgSet := ChangeSet fromStream:s.
- s close.
-
+ [
+ s := SourceCodeManager
+ streamForClass:nil fileName:eachSTFile revision:#newest directory:directory module:module cache:true.
+ chgSet := ChangeSet fromStream:s.
+ ] ensure:[
+ s notNil ifTrue:[s close].
+ ].
+ chgSet := versionMethodsAndDoitsRejected value:chgSet.
diffSet onlyInReceiver addAll:chgSet
].
].
- classesModifiedInRepository notEmpty ifTrue:[
- classesModifiedInRepository do:[:eachClass|
+ classesNewerInRepository notEmpty ifTrue:[
+ classesNewerInRepository do:[:eachClass|
|s diffs repositoryVersion currentVersion|
- s := SourceCodeManager
- streamForClass:eachClass fileName:nil revision:#newest directory:directory module:module cache:true.
- repositoryVersion := ChangeSet fromStream:s.
- s close.
-
- currentVersion := ChangeSet forExistingClass:eachClass.
+ [
+ s := SourceCodeManager
+ streamForClass:eachClass fileName:nil revision:#newest directory:directory module:module cache:true.
+ repositoryVersion := ChangeSet fromStream:s.
+ ] ensure:[
+ s notNil ifTrue:[s close].
+ ].
+
+ currentVersion := ChangeSet forExistingClass:eachClass withExtensions:false withLooseMethods:true.
+ currentVersion := versionMethodsAndDoitsRejected value:currentVersion.
diffs := repositoryVersion diffSetsAgainst:currentVersion .
diffSet addDiffSet:diffs.
].
].
+
classesDeletedInRepository notEmpty ifTrue:[
"/ self halt.
].
@@ -2597,7 +2622,8 @@
classesAddedInImage do:[:eachAddedClass |
|currentVersion|
- currentVersion := ChangeSet forExistingClass:eachAddedClass.
+ currentVersion := ChangeSet forExistingClass:eachAddedClass withExtensions:false withLooseMethods:true.
+ currentVersion := versionMethodsAndDoitsRejected value:currentVersion.
diffSet onlyInArg addAll:currentVersion.
].
].
@@ -2738,9 +2764,7 @@
removeSourceContainerForClass:aClass confirm:doConfirm warn:doWarn
"show container & optionally let user confirm twice."
- |module directory fileName info mgr resources|
-
- resources := self classResources.
+ |module directory fileName info mgr|
aClass isLoaded ifFalse:[
doWarn ifTrue:[
@@ -3796,9 +3820,9 @@
!SourceCodeManagerUtilities class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.257 2012-10-30 01:10:43 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.258 2012-10-30 14:36:42 cg Exp $'
!
version_CVS
- ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.257 2012-10-30 01:10:43 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/SourceCodeManagerUtilities.st,v 1.258 2012-10-30 14:36:42 cg Exp $'
! !