Patrick Rein uploaded a new version of Monticello to project The Trunk:
http://source.squeak.org/trunk/Monticello-pre.690.mcz ==================== Summary ==================== Name: Monticello-pre.690 Author: pre Time: 7 December 2018, 9:58:49.626427 am UUID: 1ff627da-fec1-48d4-b35f-eec253e8ef0f Ancestors: Monticello-pre.689 More advances on categorizing all the messages. This time the Monticello classes (except for one class for which I am really unsure what the messages are actually for). =============== Diff against Monticello-pre.689 =============== Item was changed: + ----- Method: MCAddition class>>of: (in category 'instance creation') ----- - ----- Method: MCAddition class>>of: (in category 'as yet unclassified') ----- of: aDefinition ^ self new intializeWithDefinition: aDefinition! Item was changed: + ----- Method: MCAddition>>= (in category 'comparing') ----- - ----- Method: MCAddition>>= (in category 'as yet unclassified') ----- = other ^ other isAddition and: [definition = other definition]! Item was changed: + ----- Method: MCAddition>>applyTo: (in category 'applying') ----- - ----- Method: MCAddition>>applyTo: (in category 'accessing') ----- applyTo: anObject anObject addDefinition: definition! Item was changed: + ----- Method: MCAddition>>hash (in category 'comparing') ----- - ----- Method: MCAddition>>hash (in category 'as yet unclassified') ----- hash ^ definition hash! Item was changed: + ----- Method: MCAddition>>inverse (in category 'accessing') ----- - ----- Method: MCAddition>>inverse (in category 'as yet unclassified') ----- inverse ^ MCRemoval of: definition! Item was changed: + ----- Method: MCAddition>>isClassPatch (in category 'testing') ----- - ----- Method: MCAddition>>isClassPatch (in category 'as yet unclassified') ----- isClassPatch ^definition isClassDefinition! Item was changed: + ----- Method: MCAncestry class>>new (in category 'instance creation') ----- - ----- Method: MCAncestry class>>new (in category 'as yet unclassified') ----- new ^ self basicNew initialize! Item was changed: + ----- Method: MCCacheRepository>>basicStoreVersion: (in category 'private') ----- - ----- Method: MCCacheRepository>>basicStoreVersion: (in category 'as yet unclassified') ----- basicStoreVersion: aVersion (aVersion isCacheable not or: [self allFileNames includes: aVersion fileName]) ifFalse: [super basicStoreVersion: aVersion] ! Item was changed: + ----- Method: MCCacheRepository>>cacheForPackage: (in category 'caching') ----- - ----- Method: MCCacheRepository>>cacheForPackage: (in category 'as yet unclassified') ----- cacheForPackage: aPackage packageCaches ifNil: [packageCaches := Dictionary new]. ^ packageCaches at: aPackage ifAbsentPut: [MCPackageCache new]! Item was changed: + ----- Method: MCCacheRepository>>newFileNames (in category 'accessing') ----- - ----- Method: MCCacheRepository>>newFileNames (in category 'as yet unclassified') ----- newFileNames ^ self allFileNames difference: self seenFileNames! Item was changed: + ----- Method: MCCacheRepository>>rescan (in category 'private') ----- - ----- Method: MCCacheRepository>>rescan (in category 'as yet unclassified') ----- rescan + + self flag: #todo. "This method seems to be unused --pre" self newFileNames do: [:ea | self versionReaderForFileNamed: ea do: [:reader | (self cacheForPackage: reader package) recordVersionInfo: reader info forFileNamed: ea. self seenFileNames add: ea]] displayingProgress: 'Scanning cache...'! Item was changed: + ----- Method: MCCacheRepository>>seenFileNames (in category 'accessing') ----- - ----- Method: MCCacheRepository>>seenFileNames (in category 'as yet unclassified') ----- seenFileNames ^ seenFiles ifNil: [seenFiles := OrderedCollection new]! Item was changed: + ----- Method: MCCacheRepository>>versionInfoForFileNamed: (in category 'caching') ----- - ----- Method: MCCacheRepository>>versionInfoForFileNamed: (in category 'as yet unclassified') ----- versionInfoForFileNamed: aString ^ cache at: aString ifAbsentPut: [self versionReaderForFileNamed: aString do: [:r | r info]]! Item was changed: + ----- Method: MCChangeSelector>>buttonSpecs (in category 'ui') ----- - ----- Method: MCChangeSelector>>buttonSpecs (in category 'as yet unclassified') ----- buttonSpecs ^ #((Select select 'Select these changes') (Cancel cancel 'Cancel the operation') )! Item was changed: + ----- Method: MCChangeSelector>>cancel (in category 'actions') ----- - ----- Method: MCChangeSelector>>cancel (in category 'as yet unclassified') ----- cancel self answer: nil! Item was changed: + ----- Method: MCChangeSelector>>defaultLabel (in category 'ui') ----- - ----- Method: MCChangeSelector>>defaultLabel (in category 'as yet unclassified') ----- defaultLabel ^ 'Change Selector'! Item was changed: + ----- Method: MCChangeSelector>>innerButtonRow (in category 'private-ui') ----- - ----- Method: MCChangeSelector>>innerButtonRow (in category 'as yet unclassified') ----- innerButtonRow ^ self buttonRow: self innerButtonSpecs! Item was changed: + ----- Method: MCChangeSelector>>innerButtonSpecs (in category 'private-ui') ----- - ----- Method: MCChangeSelector>>innerButtonSpecs (in category 'as yet unclassified') ----- innerButtonSpecs ^ #(('Select All' selectAll 'select all changes') ('Select None' selectNone 'select no changes'))! Item was changed: + ----- Method: MCChangeSelector>>kept (in category 'accessing') ----- - ----- Method: MCChangeSelector>>kept (in category 'as yet unclassified') ----- kept ^ kept ifNil: [kept := Set new]! Item was changed: + ----- Method: MCChangeSelector>>listSelectionAt: (in category 'actions') ----- - ----- Method: MCChangeSelector>>listSelectionAt: (in category 'as yet unclassified') ----- listSelectionAt: aNumber ^ self kept includes: (self items at: aNumber)! Item was changed: + ----- Method: MCChangeSelector>>listSelectionAt:put: (in category 'actions') ----- - ----- Method: MCChangeSelector>>listSelectionAt:put: (in category 'as yet unclassified') ----- listSelectionAt: aNumber put: aBoolean | item | item := self items at: aNumber. aBoolean ifTrue: [self kept add: item ] ifFalse: [self kept remove: item ifAbsent: []]! Item was changed: + ----- Method: MCChangeSelector>>select (in category 'actions') ----- - ----- Method: MCChangeSelector>>select (in category 'as yet unclassified') ----- select self answer: (MCPatch operations: kept)! Item was changed: + ----- Method: MCChangeSelector>>selectAll (in category 'actions') ----- - ----- Method: MCChangeSelector>>selectAll (in category 'as yet unclassified') ----- selectAll kept addAll: self items. self changed: #list! Item was changed: + ----- Method: MCChangeSelector>>selectNone (in category 'actions') ----- - ----- Method: MCChangeSelector>>selectNone (in category 'as yet unclassified') ----- selectNone kept := Set new. self changed: #list! Item was changed: + ----- Method: MCChangeSelector>>widgetSpecs (in category 'ui') ----- - ----- Method: MCChangeSelector>>widgetSpecs (in category 'as yet unclassified') ----- widgetSpecs Preferences annotationPanes ifFalse: [ ^#( ((buttonRow) (0 0 1 0) (0 0 0 defaultButtonPaneHeight)) ((multiListMorph:selection:listSelection:menu: list selection listSelectionAt: methodListMenu:) (0 0 1 0.4) (0 defaultButtonPaneHeight 0 0)) ((innerButtonRow) (0 0.4 1 0.4) (0 0 0 defaultButtonPaneHeight)) ((textMorph: text) (0 0.4 1 1) (0 defaultButtonPaneHeight 0 0)) )]. ^ { #((buttonRow) (0 0 1 0) (0 0 0 defaultButtonPaneHeight)). #((multiListMorph:selection:listSelection:menu: list selection listSelectionAt: methodListMenu:) (0 0 1 0.4) (0 defaultButtonPaneHeight 0 0)). #((innerButtonRow) (0 0.4 1 0.4) (0 0 0 defaultButtonPaneHeight)). { #(textMorph: annotations). #(0 0.4 1 0.4). { 0. self defaultButtonPaneHeight. 0. self defaultButtonPaneHeight+self defaultAnnotationPaneHeight. }}. { #(textMorph: text). #(0 0.4 1 1). { 0. self defaultButtonPaneHeight+self defaultAnnotationPaneHeight. 0. 0.}} }! Item was changed: + ----- Method: MCClassInstanceVariableDefinition class>>type (in category 'accessing') ----- - ----- Method: MCClassInstanceVariableDefinition class>>type (in category 'as yet unclassified') ----- type ^ #classInstance! Item was changed: + ----- Method: MCClassTraitParser class>>pattern (in category 'constants') ----- - ----- Method: MCClassTraitParser class>>pattern (in category 'as yet unclassified') ----- pattern ^ '*classTrait*uses:*'! Item was changed: + ----- Method: MCClassVariableDefinition class>>type (in category 'accessing') ----- - ----- Method: MCClassVariableDefinition class>>type (in category 'as yet unclassified') ----- type ^ #class! Item was changed: + ----- Method: MCConflict class>>operation: (in category 'instance creation') ----- - ----- Method: MCConflict class>>operation: (in category 'as yet unclassified') ----- operation: anOperation ^ self new operation: anOperation ! Item was changed: + ----- Method: MCConflict>>annotations (in category 'accessing') ----- - ----- Method: MCConflict>>annotations (in category 'as yet unclassified') ----- annotations ^operation ifNotNil: [ :op | op annotations ]! Item was changed: + ----- Method: MCConflict>>applyTo: (in category 'applying') ----- - ----- Method: MCConflict>>applyTo: (in category 'as yet unclassified') ----- applyTo: anObject self isResolved ifFalse: [self error: 'Cannot continue until this conflict has been resolved']. self remoteChosen ifTrue: [operation applyTo: anObject].! Item was changed: + ----- Method: MCConflict>>chooseLocal (in category 'resolving ') ----- - ----- Method: MCConflict>>chooseLocal (in category 'as yet unclassified') ----- chooseLocal chooseRemote := false! Item was changed: + ----- Method: MCConflict>>chooseNewer (in category 'resolving ') ----- - ----- Method: MCConflict>>chooseNewer (in category 'as yet unclassified') ----- chooseNewer self isLocalNewer ifTrue: [ self chooseLocal ] ifFalse: [ self isRemoteNewer ifTrue: [ self chooseRemote ]]! Item was changed: + ----- Method: MCConflict>>chooseOlder (in category 'resolving ') ----- - ----- Method: MCConflict>>chooseOlder (in category 'as yet unclassified') ----- chooseOlder self isRemoteNewer ifTrue: [ self chooseLocal ] ifFalse: [ self isLocalNewer ifTrue: [ self chooseRemote ]]! Item was changed: + ----- Method: MCConflict>>chooseRemote (in category 'resolving ') ----- - ----- Method: MCConflict>>chooseRemote (in category 'as yet unclassified') ----- chooseRemote chooseRemote := true! Item was changed: + ----- Method: MCConflict>>chooseSameAST (in category 'resolving ') ----- - ----- Method: MCConflict>>chooseSameAST (in category 'as yet unclassified') ----- chooseSameAST | fromSrc toSrc | (self definition isNil or: [self definition isMethodDefinition not]) ifTrue: [^ self]. fromSrc := (Parser new parse: operation fromSource class: nil class) generate decompile asString. toSrc := (Parser new parse: operation toSource class: nil class) generate decompile asString. fromSrc = toSrc ifTrue: [self chooseLocal].! Item was changed: + ----- Method: MCConflict>>clearChoice (in category 'resolving ') ----- - ----- Method: MCConflict>>clearChoice (in category 'as yet unclassified') ----- clearChoice chooseRemote := nil! Item was changed: + ----- Method: MCConflict>>definition (in category 'accessing') ----- - ----- Method: MCConflict>>definition (in category 'as yet unclassified') ----- definition ^operation ifNotNil: [ :op | op definition ]! Item was changed: + ----- Method: MCConflict>>isConflict (in category 'testing') ----- - ----- Method: MCConflict>>isConflict (in category 'as yet unclassified') ----- isConflict ^true! Item was changed: + ----- Method: MCConflict>>isLocalNewer (in category 'testing') ----- - ----- Method: MCConflict>>isLocalNewer (in category 'as yet unclassified') ----- isLocalNewer ^ self localDefinition fullTimeStamp > self remoteDefinition fullTimeStamp! Item was changed: + ----- Method: MCConflict>>isRemoteNewer (in category 'testing') ----- - ----- Method: MCConflict>>isRemoteNewer (in category 'as yet unclassified') ----- isRemoteNewer ^ self localDefinition fullTimeStamp < self remoteDefinition fullTimeStamp! Item was changed: + ----- Method: MCConflict>>isResolved (in category 'testing') ----- - ----- Method: MCConflict>>isResolved (in category 'as yet unclassified') ----- isResolved ^ chooseRemote notNil! Item was changed: + ----- Method: MCConflict>>localChosen (in category 'testing') ----- - ----- Method: MCConflict>>localChosen (in category 'as yet unclassified') ----- localChosen ^ chooseRemote notNil and: [chooseRemote not]! Item was changed: + ----- Method: MCConflict>>localDefinition (in category 'accessing') ----- - ----- Method: MCConflict>>localDefinition (in category 'as yet unclassified') ----- localDefinition ^ operation baseDefinition! Item was changed: + ----- Method: MCConflict>>operation (in category 'accessing') ----- - ----- Method: MCConflict>>operation (in category 'as yet unclassified') ----- operation ^ operation! Item was changed: + ----- Method: MCConflict>>operation: (in category 'accessing') ----- - ----- Method: MCConflict>>operation: (in category 'as yet unclassified') ----- operation: anOperation operation := anOperation! Item was changed: + ----- Method: MCConflict>>remoteChosen (in category 'testing') ----- - ----- Method: MCConflict>>remoteChosen (in category 'as yet unclassified') ----- remoteChosen ^ chooseRemote notNil and: [chooseRemote]! Item was changed: + ----- Method: MCConflict>>remoteDefinition (in category 'testing') ----- - ----- Method: MCConflict>>remoteDefinition (in category 'as yet unclassified') ----- remoteDefinition ^ operation targetDefinition! Item was changed: + ----- Method: MCConflict>>source (in category 'accessing') ----- - ----- Method: MCConflict>>source (in category 'as yet unclassified') ----- source ^ self localChosen ifTrue: [operation fromSource] ifFalse: [operation source]! Item was changed: + ----- Method: MCConflict>>status (in category 'accessing') ----- - ----- Method: MCConflict>>status (in category 'as yet unclassified') ----- status ^ self isResolved ifFalse: [''] ifTrue: [self remoteChosen ifFalse: ['L'] ifTrue: ['R']]! Item was changed: + ----- Method: MCConflict>>summary (in category 'accessing') ----- - ----- Method: MCConflict>>summary (in category 'as yet unclassified') ----- summary | attribute | attribute := self isResolved ifTrue: [self remoteChosen ifTrue: [#underlined] ifFalse: [#struckOut]] ifFalse: [#bold]. ^ Text string: operation summary attribute: (TextEmphasis perform: attribute)! Item was changed: + ----- Method: MCDependencySorter class>>items: (in category 'instance creation') ----- - ----- Method: MCDependencySorter class>>items: (in category 'as yet unclassified') ----- items: aCollection ^ self new addAll: aCollection! Item was changed: + ----- Method: MCDependencySorter class>>new (in category 'instance creation') ----- - ----- Method: MCDependencySorter class>>new (in category 'as yet unclassified') ----- new ^ self basicNew initialize! Item was changed: + ----- Method: MCDependencySorter class>>sortItems: (in category 'utility') ----- - ----- Method: MCDependencySorter class>>sortItems: (in category 'as yet unclassified') ----- sortItems: aCollection | sorter | sorter := self items: aCollection. sorter externalRequirements do: [:req | sorter addProvision: req]. ^ sorter orderedItems.! Item was changed: + ----- Method: MCDependentsWrapper>>asString (in category 'converting') ----- - ----- Method: MCDependentsWrapper>>asString (in category 'as yet unclassified') ----- asString ^item description! Item was changed: + ----- Method: MCDependentsWrapper>>contents (in category 'accessing') ----- - ----- Method: MCDependentsWrapper>>contents (in category 'as yet unclassified') ----- contents | list workingCopies | workingCopies := model unsortedWorkingCopies. list := item requiredPackages collect: [:each | workingCopies detect: [:wc | wc package = each] ifNone: [nil]] thenSelect: [:x | x notNil]. ^list collect: [:each | self class with: each model: model]! Item was changed: + ----- Method: MCDependentsWrapper>>hasContents (in category 'testing') ----- - ----- Method: MCDependentsWrapper>>hasContents (in category 'as yet unclassified') ----- hasContents ^item requiredPackages isEmpty not! Item was changed: + ----- Method: MCDependentsWrapper>>item (in category 'accessing') ----- - ----- Method: MCDependentsWrapper>>item (in category 'as yet unclassified') ----- item ^item! Item was changed: + ----- Method: MCDictionaryRepository>>= (in category 'testing') ----- - ----- Method: MCDictionaryRepository>>= (in category 'as yet unclassified') ----- = other ^ self == other! Item was changed: + ----- Method: MCDictionaryRepository>>allVersionInfos (in category 'accessing') ----- - ----- Method: MCDictionaryRepository>>allVersionInfos (in category 'as yet unclassified') ----- allVersionInfos ^ dict values collect: [:ea | ea info]! Item was changed: + ----- Method: MCDictionaryRepository>>basicStoreVersion: (in category 'private') ----- - ----- Method: MCDictionaryRepository>>basicStoreVersion: (in category 'as yet unclassified') ----- basicStoreVersion: aVersion dict at: aVersion info put: aVersion! Item was changed: + ----- Method: MCDictionaryRepository>>closestAncestorVersionFor:ifNone: (in category 'accessing') ----- - ----- Method: MCDictionaryRepository>>closestAncestorVersionFor:ifNone: (in category 'as yet unclassified') ----- closestAncestorVersionFor: anAncestry ifNone: errorBlock | info | info := anAncestry breadthFirstAncestors detect: [:ea | self includesVersionWithInfo: ea] ifNone: [^ errorBlock value]. ^ self versionWithInfo: info! Item was changed: + ----- Method: MCDictionaryRepository>>description (in category 'accessing') ----- - ----- Method: MCDictionaryRepository>>description (in category 'as yet unclassified') ----- description ^ description ifNil: ['cache']! Item was changed: + ----- Method: MCDictionaryRepository>>description: (in category 'accessing') ----- - ----- Method: MCDictionaryRepository>>description: (in category 'as yet unclassified') ----- description: aString description := aString ! Item was changed: + ----- Method: MCDictionaryRepository>>dictionary (in category 'accessing') ----- - ----- Method: MCDictionaryRepository>>dictionary (in category 'as yet unclassified') ----- dictionary ^ dict! Item was changed: + ----- Method: MCDictionaryRepository>>dictionary: (in category 'accessing') ----- - ----- Method: MCDictionaryRepository>>dictionary: (in category 'as yet unclassified') ----- dictionary: aDictionary dict := aDictionary! Item was changed: + ----- Method: MCDictionaryRepository>>includesVersionNamed: (in category 'versions') ----- - ----- Method: MCDictionaryRepository>>includesVersionNamed: (in category 'as yet unclassified') ----- includesVersionNamed: aString | mcVersionName | mcVersionName := aString asMCVersionName. ^ dict anySatisfy: [ : ea | ea info versionName = mcVersionName ]! Item was changed: + ----- Method: MCDictionaryRepository>>includesVersionWithInfo: (in category 'testing') ----- - ----- Method: MCDictionaryRepository>>includesVersionWithInfo: (in category 'as yet unclassified') ----- includesVersionWithInfo: aVersionInfo ^ dict includesKey: aVersionInfo! Item was changed: + ----- Method: MCDictionaryRepository>>initialize (in category 'initialize-release') ----- - ----- Method: MCDictionaryRepository>>initialize (in category 'as yet unclassified') ----- initialize dict := Dictionary new. ! Item was changed: + ----- Method: MCDictionaryRepository>>morphicOpen: (in category 'user interface') ----- - ----- Method: MCDictionaryRepository>>morphicOpen: (in category 'as yet unclassified') ----- morphicOpen: aWorkingCopy | names index infos | infos := self sortedVersionInfos. infos isEmpty ifTrue: [^ self inform: 'No versions']. names := infos collect: [:ea | ea name]. index := UIManager default chooseFrom: names title: 'Open version:'. index = 0 ifFalse: [(self versionWithInfo: (infos at: index)) open]! Item was changed: + ----- Method: MCDictionaryRepository>>sortedVersionInfos (in category 'accessing') ----- - ----- Method: MCDictionaryRepository>>sortedVersionInfos (in category 'as yet unclassified') ----- sortedVersionInfos | sorter | sorter := MCVersionSorter new. self allVersionInfos do: [:ea | sorter addVersionInfo: ea]. ^ sorter sortedVersionInfos ! Item was changed: + ----- Method: MCDictionaryRepository>>versionWithInfo:ifAbsent: (in category 'versions') ----- - ----- Method: MCDictionaryRepository>>versionWithInfo:ifAbsent: (in category 'as yet unclassified') ----- versionWithInfo: aVersionInfo ifAbsent: errorBlock ^ dict at: aVersionInfo ifAbsent: errorBlock! Item was changed: + ----- Method: MCDiffyVersion>>baseInfo (in category 'accessing') ----- - ----- Method: MCDiffyVersion>>baseInfo (in category 'as yet unclassified') ----- baseInfo ^ base! Item was changed: + ----- Method: MCDiffyVersion>>baseSnapshot (in category 'accessing') ----- - ----- Method: MCDiffyVersion>>baseSnapshot (in category 'as yet unclassified') ----- baseSnapshot | baseVersion | baseVersion := self workingCopy repositoryGroup versionWithInfo: base. baseVersion ifNil: [Error signal: 'Missing snapshot: ', self baseInfo name]. ^ baseVersion snapshot! Item was changed: + ----- Method: MCDiffyVersion>>canOptimizeLoading (in category 'testing') ----- - ----- Method: MCDiffyVersion>>canOptimizeLoading (in category 'as yet unclassified') ----- canOptimizeLoading "Answer wether I can provide a patch for the working copy without the usual diff pass" ^ package hasWorkingCopy and: [package workingCopy modified not and: [package workingCopy ancestors includes: self baseInfo]]! Item was changed: + ----- Method: MCDiffyVersion>>fileName (in category 'accessing') ----- - ----- Method: MCDiffyVersion>>fileName (in category 'as yet unclassified') ----- fileName ^ ((self class nameForVer: info name base: base name) , '.' , self writerClass extension) asMCVersionName! Item was changed: + ----- Method: MCDiffyVersion>>fileOutOn: (in category 'actions') ----- - ----- Method: MCDiffyVersion>>fileOutOn: (in category 'as yet unclassified') ----- fileOutOn: aStream "The whole point of diffy versions is to not store the full snapshot, so ensure we don't." snapshot:=nil. super fileOutOn: aStream! Item was changed: + ----- Method: MCDiffyVersion>>initializeWithPackage:info:dependencies:baseInfo:patch: (in category 'initialize-release') ----- - ----- Method: MCDiffyVersion>>initializeWithPackage:info:dependencies:baseInfo:patch: (in category 'as yet unclassified') ----- initializeWithPackage: aPackage info: aVersionInfo dependencies: aCollection baseInfo: baseVersionInfo patch: aPatch patch := aPatch. base := baseVersionInfo. super initializeWithPackage: aPackage info: aVersionInfo snapshot: nil dependencies: aCollection. ! Item was changed: + ----- Method: MCDiffyVersion>>isDiffy (in category 'testing') ----- - ----- Method: MCDiffyVersion>>isDiffy (in category 'as yet unclassified') ----- isDiffy ^ true! Item was changed: + ----- Method: MCDiffyVersion>>patch (in category 'accessing') ----- - ----- Method: MCDiffyVersion>>patch (in category 'as yet unclassified') ----- patch ^ patch! Item was changed: + ----- Method: MCDiffyVersion>>snapshot (in category 'accessing') ----- - ----- Method: MCDiffyVersion>>snapshot (in category 'as yet unclassified') ----- snapshot ^ snapshot ifNil: [snapshot := MCPatcher apply: patch to: self baseSnapshot]! Item was changed: + ----- Method: MCDiffyVersion>>summary (in category 'accessing') ----- - ----- Method: MCDiffyVersion>>summary (in category 'as yet unclassified') ----- summary ^ '(Diff against ', self baseInfo name, ')', String cr, super summary! Item was changed: + ----- Method: MCDiffyVersion>>writerClass (in category 'accessing') ----- - ----- Method: MCDiffyVersion>>writerClass (in category 'as yet unclassified') ----- writerClass ^ MCMcdWriter ! Item was changed: + ----- Method: MCDirectoryRepository>>description (in category 'user interface') ----- - ----- Method: MCDirectoryRepository>>description (in category 'accessing') ----- description ^ directory pathName! Item was changed: + ----- Method: MCDirectoryRepository>>initialize (in category 'initialize-release') ----- - ----- Method: MCDirectoryRepository>>initialize (in category 'accessing') ----- initialize directory := FileDirectory default! Item was changed: + ----- Method: MCDirectoryRepository>>isValid (in category 'testing') ----- - ----- Method: MCDirectoryRepository>>isValid (in category 'accessing') ----- isValid ^directory exists! Item was changed: + ----- Method: MCDirectoryRepository>>readStreamForFileNamed:do: (in category 'private') ----- - ----- Method: MCDirectoryRepository>>readStreamForFileNamed:do: (in category 'accessing') ----- readStreamForFileNamed: aString do: aBlock | file val | file := FileStream readOnlyFileNamed: (directory fullNameFor: aString). val := aBlock value: file. file close. ^ val! Item was changed: + ----- Method: MCDirectoryRepository>>writeStreamForFileNamed:replace:do: (in category 'private') ----- - ----- Method: MCDirectoryRepository>>writeStreamForFileNamed:replace:do: (in category 'accessing') ----- writeStreamForFileNamed: aString replace: aBoolean do: aBlock | file sel | sel := aBoolean ifTrue: [#forceNewFileNamed:] ifFalse: [#newFileNamed:]. file := FileStream perform: sel with: (directory fullNameFor: aString). aBlock value: file. file close.! Item was changed: + ----- Method: MCDoItParser class>>concreteSubclasses (in category 'accessing class hierarchy') ----- - ----- Method: MCDoItParser class>>concreteSubclasses (in category 'as yet unclassified') ----- concreteSubclasses ^ self allSubclasses reject: [:c | c isAbstract]! Item was changed: + ----- Method: MCDoItParser class>>forDoit: (in category 'instance creation') ----- - ----- Method: MCDoItParser class>>forDoit: (in category 'as yet unclassified') ----- forDoit: aString ^ (self subclassForDoit: aString) ifNotNil: [:c | c new source: aString]! Item was changed: + ----- Method: MCDoItParser class>>isAbstract (in category 'testing') ----- - ----- Method: MCDoItParser class>>isAbstract (in category 'as yet unclassified') ----- isAbstract ^ self pattern isNil! Item was changed: + ----- Method: MCDoItParser class>>pattern (in category 'constants') ----- - ----- Method: MCDoItParser class>>pattern (in category 'as yet unclassified') ----- pattern ^ nil! Item was changed: + ----- Method: MCDoItParser class>>subclassForDoit: (in category 'private') ----- - ----- Method: MCDoItParser class>>subclassForDoit: (in category 'as yet unclassified') ----- subclassForDoit: aString ^ self concreteSubclasses detect: [:ea | ea pattern match: aString] ifNone: []! Item was changed: + ----- Method: MCDoItParser>>addDefinitionsTo: (in category 'evaluating') ----- - ----- Method: MCDoItParser>>addDefinitionsTo: (in category 'as yet unclassified') ----- addDefinitionsTo: aCollection self subclassResponsibility ! Item was changed: + ----- Method: MCDoItParser>>source (in category 'accessing') ----- - ----- Method: MCDoItParser>>source (in category 'as yet unclassified') ----- source ^ source! Item was changed: + ----- Method: MCDoItParser>>source: (in category 'accessing') ----- - ----- Method: MCDoItParser>>source: (in category 'as yet unclassified') ----- source: aString source := aString! Item was changed: + ----- Method: MCFileBasedRepository>>allPackageAndBranchNames (in category 'packages') ----- - ----- Method: MCFileBasedRepository>>allPackageAndBranchNames (in category 'overriding') ----- allPackageAndBranchNames ^ self validNames: #packageAndBranchName! Item was changed: + ----- Method: MCFileBasedRepository>>allPackageNames (in category 'packages') ----- - ----- Method: MCFileBasedRepository>>allPackageNames (in category 'overriding') ----- allPackageNames ^ self validNames: #packageName! Item was changed: + ----- Method: MCFileBasedRepository>>basicStoreVersion: (in category 'private') ----- - ----- Method: MCFileBasedRepository>>basicStoreVersion: (in category 'overriding') ----- basicStoreVersion: aMCVersionOrConfiguration self writeStreamForFileNamed: aMCVersionOrConfiguration fileName do: [ : s | aMCVersionOrConfiguration fileOutOn: s ]. aMCVersionOrConfiguration isCacheable ifTrue: [ cache ifNil: [ cache := Dictionary new ]. self resizeCache: cache. cache at: aMCVersionOrConfiguration fileName put: aMCVersionOrConfiguration ]! Item was changed: + ----- Method: MCFileBasedRepository>>closestAncestorVersionFor:ifNone: (in category 'accessing') ----- - ----- Method: MCFileBasedRepository>>closestAncestorVersionFor:ifNone: (in category 'overriding') ----- closestAncestorVersionFor: anAncestry ifNone: errorBlock ^ self cacheAllFileNamesDuring: [super closestAncestorVersionFor: anAncestry ifNone: errorBlock]! Item was changed: + ----- Method: MCFileBasedRepository>>morphicOpen: (in category 'user interface') ----- - ----- Method: MCFileBasedRepository>>morphicOpen: (in category 'overriding') ----- morphicOpen: aWorkingCopy (MCFileRepositoryInspector repository: self workingCopy: aWorkingCopy) show! Item was changed: + ----- Method: MCFileBasedRepository>>notifyList (in category 'notifying') ----- - ----- Method: MCFileBasedRepository>>notifyList (in category 'overriding') ----- notifyList (self allFileNames includes: 'notify') ifFalse: [^ #()]. ^ self readStreamForFileNamed: 'notify' do: [:s | s upToEnd lines]! Item was changed: + ----- Method: MCFileBasedRepository>>validNames: (in category 'private') ----- - ----- Method: MCFileBasedRepository>>validNames: (in category 'overriding') ----- validNames: selectorSymbol | answer | answer := Set new. self allFileNamesOrCache do: [ : each | | versionName | versionName := each asMCVersionName. versionName isValid ifTrue: [ answer add: (versionName perform: selectorSymbol) ] ]. ^ answer! Item was changed: + ----- Method: MCFilteredVersionSorter>>addVersionInfo: (in category 'accessing') ----- - ----- Method: MCFilteredVersionSorter>>addVersionInfo: (in category 'as yet unclassified') ----- addVersionInfo: aVersionInfo (aVersionInfo hasAncestor: target) ifTrue: [super addVersionInfo: aVersionInfo] ! Item was changed: + ----- Method: MCFilteredVersionSorter>>processVersionInfo: (in category 'private') ----- - ----- Method: MCFilteredVersionSorter>>processVersionInfo: (in category 'as yet unclassified') ----- processVersionInfo: aVersionInfo | success | aVersionInfo = target ifTrue: [^ true]. (aVersionInfo hasAncestor: target) ifFalse: [^false]. self pushLayer. success := (self knownAncestorsOf: aVersionInfo) anySatisfy: [:ea | self processVersionInfo: ea]. self popLayer. success ifTrue: [self addToCurrentLayer: aVersionInfo]. ^ success ! Item was changed: + ----- Method: MCFilteredVersionSorter>>target: (in category 'accessing') ----- - ----- Method: MCFilteredVersionSorter>>target: (in category 'as yet unclassified') ----- target: aVersionInfo target := aVersionInfo! Item was changed: + ----- Method: MCFtpRepository class>>creationTemplate (in category 'configuring') ----- - ----- Method: MCFtpRepository class>>creationTemplate (in category 'as yet unclassified') ----- creationTemplate ^ 'MCFtpRepository host: ''modules.squeakfoundation.org'' directory: ''mc'' user: ''squeak'' password: ''squeak''' ! Item was changed: + ----- Method: MCFtpRepository class>>description (in category 'configuring') ----- - ----- Method: MCFtpRepository class>>description (in category 'as yet unclassified') ----- description ^ 'FTP'! Item was changed: + ----- Method: MCFtpRepository class>>fillInTheBlankRequest (in category 'configuring') ----- - ----- Method: MCFtpRepository class>>fillInTheBlankRequest (in category 'as yet unclassified') ----- fillInTheBlankRequest ^ 'FTP Repository:' ! Item was changed: + ----- Method: MCFtpRepository class>>host:directory:user:password: (in category 'instance creation') ----- - ----- Method: MCFtpRepository class>>host:directory:user:password: (in category 'as yet unclassified') ----- host: host directory: directory user: user password: password ^ self new host: host; directory: directory; user: user; password: password! Item was changed: + ----- Method: MCFtpRepository class>>morphicConfigure (in category 'configuring') ----- - ----- Method: MCFtpRepository class>>morphicConfigure (in category 'as yet unclassified') ----- morphicConfigure ^ self fillInTheBlankConfigure! Item was changed: + ----- Method: MCFtpRepository class>>templateCreationSelector (in category 'constants') ----- - ----- Method: MCFtpRepository class>>templateCreationSelector (in category 'as yet unclassified') ----- templateCreationSelector ^ #host:directory:user:password: ! Item was changed: + ----- Method: MCFtpRepository>>clientDo: (in category 'private') ----- - ----- Method: MCFtpRepository>>clientDo: (in category 'as yet unclassified') ----- clientDo: aBlock | client | client := FTPClient openOnHostNamed: host. client loginUser: user password: password. directory isEmpty ifFalse: [client changeDirectoryTo: directory]. ^ [aBlock value: client] ensure: [client close]! Item was changed: + ----- Method: MCFtpRepository>>directory: (in category 'accessing') ----- - ----- Method: MCFtpRepository>>directory: (in category 'as yet unclassified') ----- directory: dirPath directory := dirPath! Item was changed: + ----- Method: MCFtpRepository>>host: (in category 'accessing') ----- - ----- Method: MCFtpRepository>>host: (in category 'as yet unclassified') ----- host: hostname host := hostname! Item was changed: + ----- Method: MCFtpRepository>>parseDirectoryListing: (in category 'protocol handling') ----- - ----- Method: MCFtpRepository>>parseDirectoryListing: (in category 'as yet unclassified') ----- parseDirectoryListing: aString | stream files line tokens | stream := aString readStream. files := OrderedCollection new. [stream atEnd] whileFalse: [line := stream nextLine. tokens := line findTokens: ' '. tokens size > 2 ifTrue: [files add: tokens last asMCVersionName]]. ^ files! Item was changed: + ----- Method: MCFtpRepository>>password: (in category 'accessing') ----- - ----- Method: MCFtpRepository>>password: (in category 'as yet unclassified') ----- password: passwordString password := passwordString! Item was changed: + ----- Method: MCFtpRepository>>user: (in category 'accessing') ----- - ----- Method: MCFtpRepository>>user: (in category 'as yet unclassified') ----- user: userString user := userString! Item was changed: + ----- Method: MCGOODSRepository class>>creationTemplate (in category 'configuring') ----- - ----- Method: MCGOODSRepository class>>creationTemplate (in category 'as yet unclassified') ----- creationTemplate ^ 'MCGOODSRepository host: ''localhost'' port: 6100'! Item was changed: + ----- Method: MCGOODSRepository class>>description (in category 'configuring') ----- - ----- Method: MCGOODSRepository class>>description (in category 'as yet unclassified') ----- description ^ 'GOODS'! Item was changed: + ----- Method: MCGOODSRepository class>>fillInTheBlankRequest (in category 'configuring') ----- - ----- Method: MCGOODSRepository class>>fillInTheBlankRequest (in category 'as yet unclassified') ----- fillInTheBlankRequest ^ 'GOODS Repository:'! Item was changed: + ----- Method: MCGOODSRepository class>>host:port: (in category 'instance creation') ----- - ----- Method: MCGOODSRepository class>>host:port: (in category 'as yet unclassified') ----- host: hostname port: portNumber ^ self new host: hostname; port: portNumber! Item was changed: + ----- Method: MCGOODSRepository class>>morphicConfigure (in category 'configuring') ----- - ----- Method: MCGOODSRepository class>>morphicConfigure (in category 'as yet unclassified') ----- morphicConfigure ^ self fillInTheBlankConfigure! Item was changed: + ----- Method: MCGOODSRepository>>basicStoreVersion: (in category 'private') ----- - ----- Method: MCGOODSRepository>>basicStoreVersion: (in category 'as yet unclassified') ----- basicStoreVersion: aVersion self root at: aVersion info put: aVersion. self db commit.! Item was changed: + ----- Method: MCGOODSRepository>>db (in category 'private') ----- - ----- Method: MCGOODSRepository>>db (in category 'as yet unclassified') ----- db (connection isNil or: [connection isConnected not]) ifTrue: [ connection := Smalltalk at: #KKDatabase ifPresent: [:cl | cl onHost:hostname port: port ] ]. ^ connection! Item was changed: + ----- Method: MCGOODSRepository>>description (in category 'user interface') ----- - ----- Method: MCGOODSRepository>>description (in category 'as yet unclassified') ----- description ^ 'goods://', hostname asString, ':', port asString! Item was changed: + ----- Method: MCGOODSRepository>>host: (in category 'accessing') ----- - ----- Method: MCGOODSRepository>>host: (in category 'as yet unclassified') ----- host: aString hostname := aString! Item was changed: + ----- Method: MCGOODSRepository>>includesVersionNamed: (in category 'versions') ----- - ----- Method: MCGOODSRepository>>includesVersionNamed: (in category 'as yet unclassified') ----- includesVersionNamed: aString ^ (self versionNamed: aString) notNil! Item was changed: + ----- Method: MCGOODSRepository>>port: (in category 'accessing') ----- - ----- Method: MCGOODSRepository>>port: (in category 'as yet unclassified') ----- port: aNumber port := aNumber! Item was changed: + ----- Method: MCGOODSRepository>>root (in category 'accessing') ----- - ----- Method: MCGOODSRepository>>root (in category 'as yet unclassified') ----- root self db root ifNil: [self db root: Dictionary new]. ^ self db root! Item was changed: + ----- Method: MCGOODSRepository>>versionNamed: (in category 'versions') ----- - ----- Method: MCGOODSRepository>>versionNamed: (in category 'as yet unclassified') ----- versionNamed: aString | versionName | versionName := aString asMCVersionName. self root keysDo: [ : each | each versionName = versionName ifTrue: [ ^ each ] ]. ^ nil! Item was changed: + ----- Method: MCGOODSRepository>>versionNamesForPackageNamed: (in category 'versions') ----- - ----- Method: MCGOODSRepository>>versionNamesForPackageNamed: (in category 'as yet unclassified') ----- versionNamesForPackageNamed: aString ^ Array streamContents: [ : stream | self root keysDo: [ : each | each versionName packageName = aString ifTrue: [ stream nextPut: each ] ] ]! Item was changed: + ----- Method: MCGOODSRepository>>versionWithInfo:ifAbsent: (in category 'versions') ----- - ----- Method: MCGOODSRepository>>versionWithInfo:ifAbsent: (in category 'as yet unclassified') ----- versionWithInfo: aVersionInfo ifAbsent: errorBlock ^ self root at: aVersionInfo ifAbsent: errorBlock! Item was changed: + ----- Method: MCHttpRepository>>allFileNames (in category 'private-files') ----- - ----- Method: MCHttpRepository>>allFileNames (in category 'overriding') ----- allFileNames | index | index := self displayProgress: 'Updating ', self description during: [ self httpGet: self locationWithTrailingSlash, '?C=M;O=D' arguments: nil ]. ^index ifNotNil: [ self parseFileNamesFromStream: index ]! Item was changed: + ----- Method: MCHttpRepository>>asCreationTemplate (in category 'accessing') ----- - ----- Method: MCHttpRepository>>asCreationTemplate (in category 'overriding') ----- asCreationTemplate ^self class creationTemplateLocation: location user: user password: password! Item was changed: + ----- Method: MCHttpRepository>>description (in category 'user interface') ----- - ----- Method: MCHttpRepository>>description (in category 'overriding') ----- description ^ location! Item was changed: + ----- Method: MCHttpRepository>>flushCache (in category 'private') ----- - ----- Method: MCHttpRepository>>flushCache (in category 'overriding') ----- flushCache super flushCache. readerCache := nil.! Item was changed: + ----- Method: MCHttpRepository>>mcModel (in category '*monticello') ----- - ----- Method: MCHttpRepository>>mcModel (in category 'overriding') ----- mcModel "Answer the object which can respond to #historyOf: and #originOf: or nil, if none." ^ self isIndexed ifTrue: [self]! Item was changed: + ----- Method: MCHttpRepository>>refresh (in category 'accessing') ----- - ----- Method: MCHttpRepository>>refresh (in category 'overriding') ----- refresh super refresh. indexed := nil! Item was changed: + ----- Method: MCInfoProxy class>>info:workingCopy:repository: (in category 'instance creation') ----- - ----- Method: MCInfoProxy class>>info:workingCopy:repository: (in category 'create') ----- info: aMCVersionInfo workingCopy: aMCWorkingCopy repository: aMCRepository ^ self new setInfo: aMCVersionInfo workingCopy: aMCWorkingCopy repository: aMCRepository! Item was changed: + ----- Method: MCInstanceVariableDefinition class>>type (in category 'accessing') ----- - ----- Method: MCInstanceVariableDefinition class>>type (in category 'as yet unclassified') ----- type ^ #instance! Item was changed: + ----- Method: MCMcdReader class>>extension (in category 'accessing') ----- - ----- Method: MCMcdReader class>>extension (in category 'as yet unclassified') ----- extension ^ 'mcd'! Item was changed: + ----- Method: MCMcdReader>>baseInfo (in category 'accessing') ----- - ----- Method: MCMcdReader>>baseInfo (in category 'as yet unclassified') ----- baseInfo ^ baseInfo ifNil: [self loadBaseInfo]! Item was changed: + ----- Method: MCMcdReader>>basicVersion (in category 'accessing') ----- - ----- Method: MCMcdReader>>basicVersion (in category 'as yet unclassified') ----- basicVersion ^ MCDiffyVersion package: self package info: self info dependencies: self dependencies baseInfo: self baseInfo patch: self patch! Item was changed: + ----- Method: MCMcdReader>>buildPatchFrom:to: (in category 'private-loading') ----- - ----- Method: MCMcdReader>>buildPatchFrom:to: (in category 'as yet unclassified') ----- buildPatchFrom: oldDefinitions to: newDefinitions ^ MCPatch fromBase: (MCSnapshot fromDefinitions: oldDefinitions) target: (MCSnapshot fromDefinitions: newDefinitions)! Item was changed: + ----- Method: MCMcdReader>>loadBaseInfo (in category 'loading') ----- - ----- Method: MCMcdReader>>loadBaseInfo (in category 'as yet unclassified') ----- loadBaseInfo ^ baseInfo := self extractInfoFrom: (self parseMember: 'base')! Item was changed: + ----- Method: MCMcdReader>>loadPatch (in category 'loading') ----- - ----- Method: MCMcdReader>>loadPatch (in category 'as yet unclassified') ----- loadPatch | old new | (self zip memberNamed: 'patch.bin') ifNotNil: [:m | [^ patch := (DataStream on: m contentStream) next ] on: Error do: [:fallThrough ]]. definitions := OrderedCollection new. (self zip membersMatching: 'old/*') do: [:m | self extractDefinitionsFrom: m]. old := definitions asArray. definitions := OrderedCollection new. (self zip membersMatching: 'new/*') do: [:m | self extractDefinitionsFrom: m]. new := definitions asArray. ^ patch := self buildPatchFrom: old to: new. ! Item was changed: + ----- Method: MCMcdReader>>patch (in category 'accessing') ----- - ----- Method: MCMcdReader>>patch (in category 'as yet unclassified') ----- patch ^ patch ifNil: [self loadPatch]! Item was changed: + ----- Method: MCMcdWriter class>>readerClass (in category 'accessing') ----- - ----- Method: MCMcdWriter class>>readerClass (in category 'as yet unclassified') ----- readerClass ^ MCMcdReader! Item was changed: + ----- Method: MCMczReader>>associate: (in category 'utilities') ----- - ----- Method: MCMczReader>>associate: (in category 'as yet unclassified') ----- associate: tokens | result | result := Dictionary new. tokens pairsDo: [:key :value | result at: key put: (value isString ifTrue: [value] ifFalse: [value collect: [:ea | self associate: ea]])]. ^ result! Item was changed: + ----- Method: MCMczReader>>extractDefinitionsFrom: (in category 'private-loading') ----- - ----- Method: MCMczReader>>extractDefinitionsFrom: (in category 'as yet unclassified') ----- extractDefinitionsFrom: member | reader | (MCSnapshotReader readerClassForFileNamed: member fileName) ifNotNil: [:rc | reader := rc on: (self contentsForMember: member) readStream. definitions addAll: reader definitions] ! Item was changed: + ----- Method: MCMczReader>>extractDependencyFrom: (in category 'private-loading') ----- - ----- Method: MCMczReader>>extractDependencyFrom: (in category 'as yet unclassified') ----- extractDependencyFrom: zipMember ^ MCVersionDependency package: (MCPackage named: (zipMember fileName copyAfterLast: $/)) info: (self extractInfoFrom: (self parseMember: zipMember))! Item was changed: + ----- Method: MCMczReader>>extractInfoFrom: (in category 'private-loading') ----- - ----- Method: MCMczReader>>extractInfoFrom: (in category 'as yet unclassified') ----- extractInfoFrom: dict ^MCWorkingCopy infoFromDictionary: dict cache: self infoCache! Item was changed: + ----- Method: MCMczReader>>infoCache (in category 'accessing') ----- - ----- Method: MCMczReader>>infoCache (in category 'as yet unclassified') ----- infoCache ^ infoCache ifNil: [infoCache := Dictionary new]! Item was changed: + ----- Method: MCMczReader>>parseMember: (in category 'utilities') ----- - ----- Method: MCMczReader>>parseMember: (in category 'as yet unclassified') ----- parseMember: memberOrName | member contents tokens | member := self zip member: memberOrName. contents := self contentsForMember: member. tokens := (self scanner scanTokens: contents) first. ^ self associate: tokens! Item was changed: + ----- Method: MCMczReader>>scanner (in category 'constants') ----- - ----- Method: MCMczReader>>scanner (in category 'as yet unclassified') ----- scanner ^ MCScanner! Item was changed: + ----- Method: MCMczReader>>zip (in category 'accessing') ----- - ----- Method: MCMczReader>>zip (in category 'as yet unclassified') ----- zip zip ifNil: [zip := ZipArchive new. zip readFrom: stream]. ^ zip! Item was changed: + ----- Method: MCMczWriter class>>fileOut:on: (in category 'fileIn/out') ----- - ----- Method: MCMczWriter class>>fileOut:on: (in category 'as yet unclassified') ----- fileOut: aVersion on: aStream | inst | inst := self on: aStream. inst writeVersion: aVersion. inst flush. ! Item was changed: + ----- Method: MCMczWriter class>>new (in category 'instance creation') ----- - ----- Method: MCMczWriter class>>new (in category 'as yet unclassified') ----- new ^ self basicNew initialize! Item was changed: + ----- Method: MCMczWriter class>>readerClass (in category 'accessing') ----- - ----- Method: MCMczWriter class>>readerClass (in category 'as yet unclassified') ----- readerClass ^ MCMczReader! Item was changed: + ----- Method: MCMergeBrowser class>>resolveConflictsInMerger: (in category 'instance creation') ----- - ----- Method: MCMergeBrowser class>>resolveConflictsInMerger: (in category 'as yet unclassified') ----- resolveConflictsInMerger: aMerger | inst | inst := self new merger: aMerger. ^ inst showModally ifNil: [false]! Item was changed: + ----- Method: MCMergeBrowser>>buttonSpecs (in category 'ui') ----- - ----- Method: MCMergeBrowser>>buttonSpecs (in category 'as yet unclassified') ----- buttonSpecs ^ #((Merge merge 'Proceed with the merge' canMerge) (Cancel cancel 'Cancel the merge') ('All Newer' chooseAllNewerConflicts 'Choose all newer conflict versions') ('All Older' chooseAllOlderConflicts 'Choose all older conflict versions') ('Rest Reject' chooseAllUnchosenLocal 'Choose local versions of all remaining conflicts') ('Rest Accept' chooseAllUnchosenRemote 'Choose remote versions of all remaining conflicts') ('Accept same source' chooseAllSameAST 'Choose all local conflicting versions that have essentially the same code') )! Item was changed: + ----- Method: MCMergeBrowser>>canMerge (in category 'testing') ----- - ----- Method: MCMergeBrowser>>canMerge (in category 'as yet unclassified') ----- canMerge ^ merger isMerged! Item was changed: + ----- Method: MCMergeBrowser>>cancel (in category 'actions') ----- - ----- Method: MCMergeBrowser>>cancel (in category 'as yet unclassified') ----- cancel self answer: false! Item was changed: + ----- Method: MCMergeBrowser>>chooseAllNewerConflicts (in category 'actions') ----- - ----- Method: MCMergeBrowser>>chooseAllNewerConflicts (in category 'as yet unclassified') ----- chooseAllNewerConflicts conflicts do: [ :ea | ea chooseNewer ]. self changed: #text; changed: #list; changed: #canMerge.! Item was changed: + ----- Method: MCMergeBrowser>>chooseAllOlderConflicts (in category 'actions') ----- - ----- Method: MCMergeBrowser>>chooseAllOlderConflicts (in category 'as yet unclassified') ----- chooseAllOlderConflicts conflicts do: [ :ea | ea chooseOlder ]. self changed: #text; changed: #list; changed: #canMerge.! Item was changed: + ----- Method: MCMergeBrowser>>chooseAllSameAST (in category 'actions') ----- - ----- Method: MCMergeBrowser>>chooseAllSameAST (in category 'as yet unclassified') ----- chooseAllSameAST conflicts do: [ :ea | ea chooseSameAST ]. self changed: #text; changed: #list; changed: #canMerge.! Item was changed: + ----- Method: MCMergeBrowser>>chooseAllUnchosenLocal (in category 'actions') ----- - ----- Method: MCMergeBrowser>>chooseAllUnchosenLocal (in category 'as yet unclassified') ----- chooseAllUnchosenLocal conflicts do: [ :ea | ea isResolved ifFalse: [ ea chooseLocal ] ]. self changed: #text; changed: #list; changed: #canMerge.! Item was changed: + ----- Method: MCMergeBrowser>>chooseAllUnchosenRemote (in category 'actions') ----- - ----- Method: MCMergeBrowser>>chooseAllUnchosenRemote (in category 'as yet unclassified') ----- chooseAllUnchosenRemote conflicts do: [ :ea | ea isResolved ifFalse: [ ea chooseRemote ] ]. self changed: #text; changed: #list; changed: #canMerge.! Item was changed: + ----- Method: MCMergeBrowser>>chooseLocal (in category 'actions') ----- - ----- Method: MCMergeBrowser>>chooseLocal (in category 'as yet unclassified') ----- chooseLocal self conflictSelectionDo: [selection chooseLocal. self changed: #text; changed: #list; changed: #canMerge]. self selectNextUnresolvedConflict! Item was changed: + ----- Method: MCMergeBrowser>>chooseRemote (in category 'actions') ----- - ----- Method: MCMergeBrowser>>chooseRemote (in category 'as yet unclassified') ----- chooseRemote self conflictSelectionDo: [selection chooseRemote. self changed: #text; changed: #list; changed: #canMerge]. self selectNextUnresolvedConflict! Item was changed: + ----- Method: MCMergeBrowser>>clearChoice (in category 'actions') ----- - ----- Method: MCMergeBrowser>>clearChoice (in category 'as yet unclassified') ----- clearChoice self conflictSelectionDo: [selection clearChoice. self changed: #text; changed: #list; changed: #canMerge]! Item was changed: + ----- Method: MCMergeBrowser>>conflictSelectionDo: (in category 'private-actions') ----- - ----- Method: MCMergeBrowser>>conflictSelectionDo: (in category 'as yet unclassified') ----- conflictSelectionDo: aBlock self selectionIsConflicted ifTrue: aBlock! Item was changed: + ----- Method: MCMergeBrowser>>defaultLabel (in category 'ui') ----- - ----- Method: MCMergeBrowser>>defaultLabel (in category 'as yet unclassified') ----- defaultLabel ^ 'Merge Browser'! Item was changed: + ----- Method: MCMergeBrowser>>getConflictMenu: (in category 'menus') ----- - ----- Method: MCMergeBrowser>>getConflictMenu: (in category 'as yet unclassified') ----- getConflictMenu: aMenu selection remoteChosen ifTrue: [aMenu add: 'undo keep change' target: self selector: #clearChoice] ifFalse: [aMenu add: 'keep change' target: self selector: #chooseRemote]. selection localChosen ifTrue: [aMenu add: 'undo reject change' target: self selector: #clearChoice] ifFalse: [aMenu add: 'reject change' target: self selector: #chooseLocal]. ^ aMenu! Item was changed: + ----- Method: MCMergeBrowser>>getMenu: (in category 'morphic ui') ----- - ----- Method: MCMergeBrowser>>getMenu: (in category 'as yet unclassified') ----- getMenu: aMenu selection ifNil: [^ aMenu]. ^ self selectionIsConflicted ifTrue: [self getConflictMenu: aMenu] ifFalse: [self getOperationMenu: aMenu]! Item was changed: + ----- Method: MCMergeBrowser>>getOperationMenu: (in category 'menus') ----- - ----- Method: MCMergeBrowser>>getOperationMenu: (in category 'as yet unclassified') ----- getOperationMenu: aMenu ^ aMenu! Item was changed: + ----- Method: MCMergeBrowser>>innerButtonRow (in category 'private-ui') ----- - ----- Method: MCMergeBrowser>>innerButtonRow (in category 'as yet unclassified') ----- innerButtonRow ^ self buttonRow: self innerButtonSpecs! Item was changed: + ----- Method: MCMergeBrowser>>innerButtonSpecs (in category 'private-ui') ----- - ----- Method: MCMergeBrowser>>innerButtonSpecs (in category 'as yet unclassified') ----- innerButtonSpecs ^ #((Accept chooseRemote 'Accept the selected incoming change. Overwrites local code.' ) (Reject chooseLocal 'Reject the selected incoming change. Retains local code.' ))! Item was changed: + ----- Method: MCMergeBrowser>>items (in category 'accessing') ----- - ----- Method: MCMergeBrowser>>items (in category 'as yet unclassified') ----- items ^ conflicts, super items! Item was changed: + ----- Method: MCMergeBrowser>>merge (in category 'actions') ----- - ----- Method: MCMergeBrowser>>merge (in category 'as yet unclassified') ----- merge merger isMerged ifFalse: [self inform: 'You must resolve all the conflicts first'] ifTrue: [self answer: true] ! Item was changed: + ----- Method: MCMergeBrowser>>merger: (in category 'accessing') ----- - ----- Method: MCMergeBrowser>>merger: (in category 'as yet unclassified') ----- merger: aMerger merger := aMerger. items := aMerger operations sorted. conflicts := aMerger conflicts sort: [:a :b | a operation <= b operation].! Item was changed: + ----- Method: MCMergeBrowser>>methodListKey:from: (in category 'menus') ----- - ----- Method: MCMergeBrowser>>methodListKey:from: (in category 'as yet unclassified') ----- methodListKey: aKeystroke from: aListMorph aKeystroke caseOf: { [$k] -> [self chooseRemote]. [$r] -> [self chooseLocal]} otherwise: [super methodListKey: aKeystroke from: aListMorph ]! Item was changed: + ----- Method: MCMergeBrowser>>selectNextUnresolvedConflict (in category 'actions') ----- - ----- Method: MCMergeBrowser>>selectNextUnresolvedConflict (in category 'as yet unclassified') ----- selectNextUnresolvedConflict "Try and select the next unresolved conflict starting at current selection in the list, wrapping at beginning. If there is no more unresolved conflict, then simply move to next non conflict item in the list. This method makes assumption that conflicts are always sorted before non conflicts items." (self findListMorph: #list) ifNotNil: [:aMorph | | currentIndex nextUnresolvedIndex | currentIndex := aMorph getCurrentSelectionIndex min: conflicts size. nextUnresolvedIndex := (currentIndex + 1 to: currentIndex + conflicts size - 1) detect: [:i | | nextItem | ((nextItem := conflicts atWrap: i) isKindOf: MCConflict) and: [nextItem isResolved not]] ifNone: [0]. nextUnresolvedIndex = 0 ifTrue: [items size > 1 ifTrue: [self selection: (aMorph getCurrentSelectionIndex max: conflicts size) - conflicts size \\ items size + conflicts size + 1]] ifFalse: [self selection: nextUnresolvedIndex - 1 \\ conflicts size + 1].].! Item was changed: + ----- Method: MCMergeBrowser>>selectionIsConflicted (in category 'testing') ----- - ----- Method: MCMergeBrowser>>selectionIsConflicted (in category 'as yet unclassified') ----- selectionIsConflicted ^ selection isKindOf: MCConflict! Item was changed: + ----- Method: MCMergeBrowser>>widgetSpecs (in category 'ui') ----- - ----- Method: MCMergeBrowser>>widgetSpecs (in category 'as yet unclassified') ----- widgetSpecs Preferences annotationPanes ifFalse: [ ^#( ((buttonRow) (0 0 1 0) (0 0 0 defaultButtonPaneHeight)) ((listMorph:selection:menu:keystroke: list selection methodListMenu: methodListKey:from:) (0 0 1 0.4) (0 defaultButtonPaneHeight 0 0)) ((innerButtonRow) (0 0.4 1 0.4) (0 0 0 defaultButtonPaneHeight)) ((textMorph: text) (0 0.4 1 1) (0 defaultButtonPaneHeight 0 0)) )]. ^ { #((buttonRow) (0 0 1 0) (0 0 0 defaultButtonPaneHeight)). #((listMorph:selection:menu:keystroke: list selection methodListMenu: methodListKey:from:) (0 0 1 0.4) (0 defaultButtonPaneHeight 0 0)). #((innerButtonRow) (0 0.4 1 0.4) (0 0 0 defaultButtonPaneHeight)). { #(textMorph: annotations). #(0 0.4 1 0.4). { 0. self defaultButtonPaneHeight. 0. self defaultButtonPaneHeight+self defaultAnnotationPaneHeight. }}. { #(textMorph: text). #(0 0.4 1 1). { 0. self defaultButtonPaneHeight+self defaultAnnotationPaneHeight. 0. 0.}} }! Item was changed: + ----- Method: MCMergeRecord class>>version: (in category 'instance creation') ----- - ----- Method: MCMergeRecord class>>version: (in category 'as yet unclassified') ----- version: aVersion ^ self basicNew initializeWithVersion: aVersion! Item was changed: + ----- Method: MCMergeRecord>>ancestorInfo (in category 'accessing') ----- - ----- Method: MCMergeRecord>>ancestorInfo (in category 'as yet unclassified') ----- ancestorInfo ^ ancestorInfo ifNil: [ancestorInfo := version info commonAncestorWith: version workingCopy ancestry]! Item was changed: + ----- Method: MCMergeRecord>>ancestorSnapshot (in category 'accessing') ----- - ----- Method: MCMergeRecord>>ancestorSnapshot (in category 'as yet unclassified') ----- ancestorSnapshot ^ ancestorSnapshot ifNil: [ancestorSnapshot := version workingCopy findSnapshotWithVersionInfo: self ancestorInfo]! Item was changed: + ----- Method: MCMergeRecord>>imageIsClean (in category 'testing') ----- - ----- Method: MCMergeRecord>>imageIsClean (in category 'as yet unclassified') ----- imageIsClean | ancestors | ancestors := version workingCopy ancestors. ^ ancestors size = 1 and: [ancestors first = self ancestorInfo and: [self imagePatch isEmpty]]! Item was changed: + ----- Method: MCMergeRecord>>imagePatch (in category 'accessing') ----- - ----- Method: MCMergeRecord>>imagePatch (in category 'as yet unclassified') ----- imagePatch ^ imagePatch ifNil: [imagePatch := self packageSnapshot patchRelativeToBase: self ancestorSnapshot]! Item was changed: + ----- Method: MCMergeRecord>>initializeWithVersion: (in category 'initialize-release') ----- - ----- Method: MCMergeRecord>>initializeWithVersion: (in category 'as yet unclassified') ----- initializeWithVersion: aVersion version := aVersion! Item was changed: + ----- Method: MCMergeRecord>>isAncestorMerge (in category 'testing') ----- - ----- Method: MCMergeRecord>>isAncestorMerge (in category 'as yet unclassified') ----- isAncestorMerge ^ version workingCopy ancestry hasAncestor: version info! Item was changed: + ----- Method: MCMergeRecord>>mergePatch (in category 'accessing') ----- - ----- Method: MCMergeRecord>>mergePatch (in category 'as yet unclassified') ----- mergePatch ^ mergePatch ifNil: [mergePatch := version snapshot patchRelativeToBase: self ancestorSnapshot]! Item was changed: + ----- Method: MCMergeRecord>>packageSnapshot (in category 'accessing') ----- - ----- Method: MCMergeRecord>>packageSnapshot (in category 'as yet unclassified') ----- packageSnapshot ^ packageSnapshot ifNil: [packageSnapshot := version package snapshot]! Item was changed: + ----- Method: MCMergeRecord>>updateWorkingCopy (in category 'operations') ----- - ----- Method: MCMergeRecord>>updateWorkingCopy (in category 'as yet unclassified') ----- updateWorkingCopy self isAncestorMerge ifFalse: [self imageIsClean ifTrue: [version workingCopy loaded: version] ifFalse: [version workingCopy merged: version]]! Item was changed: + ----- Method: MCMergeRecord>>version (in category 'accessing') ----- - ----- Method: MCMergeRecord>>version (in category 'as yet unclassified') ----- version ^ version! Item was changed: + ----- Method: MCMerger>>addConflictWithOperation: (in category 'accessing') ----- - ----- Method: MCMerger>>addConflictWithOperation: (in category 'as yet unclassified') ----- addConflictWithOperation: anOperation self conflicts add: (MCConflict operation: anOperation)! Item was changed: + ----- Method: MCMerger>>applyTo: (in category 'applying') ----- - ----- Method: MCMerger>>applyTo: (in category 'as yet unclassified') ----- applyTo: anObject self isMerged ifFalse: [self error: 'You must resolve all the conflicts first']. conflicts do: [:ea | ea applyTo: anObject]! Item was changed: + ----- Method: MCMerger>>conflicts (in category 'accessing') ----- - ----- Method: MCMerger>>conflicts (in category 'as yet unclassified') ----- conflicts ^ conflicts ifNil: [conflicts := OrderedCollection new]! Item was changed: + ----- Method: MCMerger>>isMerged (in category 'testing') ----- - ----- Method: MCMerger>>isMerged (in category 'as yet unclassified') ----- isMerged ^ self conflicts allSatisfy: [:ea | ea isResolved]! Item was changed: + ----- Method: MCMerger>>load (in category 'loading') ----- - ----- Method: MCMerger>>load (in category 'as yet unclassified') ----- load | loader | loader := MCPackageLoader new. loader provisions addAll: self provisions. self applyTo: loader. loader load! Item was changed: + ----- Method: MCMerger>>loadWithNameLike: (in category 'loading') ----- - ----- Method: MCMerger>>loadWithNameLike: (in category 'as yet unclassified') ----- loadWithNameLike: baseName | loader | loader := MCPackageLoader new. loader provisions addAll: self provisions. self applyTo: loader. loader loadWithNameLike: baseName! Item was changed: + ----- Method: MCMerger>>mergedSnapshot (in category 'accessing') ----- - ----- Method: MCMerger>>mergedSnapshot (in category 'as yet unclassified') ----- mergedSnapshot ^ MCPatcher apply: self to: self baseSnapshot! Item was changed: + ----- Method: MCMerger>>operations (in category 'accessing') ----- - ----- Method: MCMerger>>operations (in category 'as yet unclassified') ----- operations ^ #()! Item was changed: + ----- Method: MCMerger>>provisions (in category 'accessing') ----- - ----- Method: MCMerger>>provisions (in category 'as yet unclassified') ----- provisions ^ #()! Item was changed: + ----- Method: MCModification class>>of:to: (in category 'instance creation') ----- - ----- Method: MCModification class>>of:to: (in category 'as yet unclassified') ----- of: base to: target ^ self new initializeWithBase: base target: target! Item was changed: + ----- Method: MCModification>>= (in category 'comparing') ----- - ----- Method: MCModification>>= (in category 'as yet unclassified') ----- = other ^ other isModification and: [obsoletion = other obsoletion and: [modification = other modification]]! Item was changed: + ----- Method: MCModification>>applyTo: (in category 'applying') ----- - ----- Method: MCModification>>applyTo: (in category 'accessing') ----- applyTo: anObject anObject modifyDefinition: obsoletion to: modification! Item was changed: + ----- Method: MCModification>>hash (in category 'comparing') ----- - ----- Method: MCModification>>hash (in category 'as yet unclassified') ----- hash ^ obsoletion hash bitXor: modification hash! Item was changed: + ----- Method: MCModification>>inverse (in category 'accessing') ----- - ----- Method: MCModification>>inverse (in category 'as yet unclassified') ----- inverse ^ MCModification of: modification to: obsoletion! Item was changed: + ----- Method: MCModification>>isClassPatch (in category 'testing') ----- - ----- Method: MCModification>>isClassPatch (in category 'as yet unclassified') ----- isClassPatch ^obsoletion isClassDefinition! Item was changed: + ----- Method: MCModification>>isUnchangedMethod (in category 'testing') ----- - ----- Method: MCModification>>isUnchangedMethod (in category 'as yet unclassified') ----- isUnchangedMethod "true if this is a modification of a method where only the timestamp changed" ^ obsoletion isMethodDefinition and: [obsoletion source = modification source and: [obsoletion category = modification category] ]! Item was changed: + ----- Method: MCModification>>printAnnotations:on: (in category 'accessing') ----- - ----- Method: MCModification>>printAnnotations:on: (in category 'as yet unclassified') ----- printAnnotations: request on: aStream aStream nextPutAll: 'old: '. obsoletion printAnnotations: request on: aStream. aStream cr. aStream nextPutAll: 'new: '. modification printAnnotations: request on: aStream.! Item was changed: + ----- Method: MCOperationsBrowser class>>items: (in category 'instance creation') ----- - ----- Method: MCOperationsBrowser class>>items: (in category 'creation') ----- items: aCollection ^ self new setItems: aCollection ; yourself! Item was changed: + ----- Method: MCOperationsList class>>operations: (in category 'instance creation') ----- - ----- Method: MCOperationsList class>>operations: (in category 'create') ----- operations: aCollection ^ self basicNew initializeWithOperations: aCollection! Item was changed: + ----- Method: MCOrganizationDefinition class>>categories: (in category 'instance creation') ----- - ----- Method: MCOrganizationDefinition class>>categories: (in category 'as yet unclassified') ----- categories: anArray ^ self instanceLike: (self new categories: anArray)! Item was changed: + ----- Method: MCPackageCache class>>new (in category 'instance creation') ----- - ----- Method: MCPackageCache class>>new (in category 'as yet unclassified') ----- new ^ self basicNew initialize! Item was changed: + ----- Method: MCPackageCache>>initialize (in category 'initialize-release') ----- - ----- Method: MCPackageCache>>initialize (in category 'as yet unclassified') ----- initialize sorter := MCVersionSorter new. fileNames := Dictionary new.! Item was changed: + ----- Method: MCPackageCache>>recordVersionInfo:forFileNamed: (in category 'recording') ----- - ----- Method: MCPackageCache>>recordVersionInfo:forFileNamed: (in category 'as yet unclassified') ----- recordVersionInfo: aVersionInfo forFileNamed: aString Transcript cr; show: aString. fileNames at: aVersionInfo put: aString. sorter addVersionInfo: aVersionInfo! Item was changed: + ----- Method: MCPackageCache>>versionInfos (in category 'accessing') ----- - ----- Method: MCPackageCache>>versionInfos (in category 'as yet unclassified') ----- versionInfos ^ sorter sortedVersionInfos ! Item was changed: + ----- Method: MCPackageLoader class>>installSnapshot: (in category 'loading') ----- - ----- Method: MCPackageLoader class>>installSnapshot: (in category 'as yet unclassified') ----- installSnapshot: aSnapshot self new installSnapshot: aSnapshot; load! Item was changed: + ----- Method: MCPackageLoader class>>new (in category 'instance creation') ----- - ----- Method: MCPackageLoader class>>new (in category 'as yet unclassified') ----- new ^ self basicNew initialize! Item was changed: + ----- Method: MCPackageLoader class>>unloadPackage: (in category 'unloading') ----- - ----- Method: MCPackageLoader class>>unloadPackage: (in category 'as yet unclassified') ----- unloadPackage: aPackage self new unloadPackage: aPackage; loadWithNameLike: aPackage name, '-unload'! Item was changed: + ----- Method: MCPackageLoader class>>updatePackage:withSnapshot: (in category 'loading') ----- - ----- Method: MCPackageLoader class>>updatePackage:withSnapshot: (in category 'as yet unclassified') ----- updatePackage: aPackage withSnapshot: aSnapshot self new updatePackage: aPackage withSnapshot: aSnapshot; load! Item was changed: + ----- Method: MCPackageManager class>>allManagers (in category 'private') ----- - ----- Method: MCPackageManager class>>allManagers (in category 'as yet unclassified') ----- allManagers ^ self registry values! Item was changed: + ----- Method: MCPackageManager class>>forPackage: (in category 'instance creation') ----- - ----- Method: MCPackageManager class>>forPackage: (in category 'as yet unclassified') ----- forPackage: aPackage ^ self registry at: aPackage ifAbsent: [|mgr| mgr := self new initializeWithPackage: aPackage. self registry at: aPackage put: mgr. self changed: #allManagers. mgr]! Item was changed: + ----- Method: MCPackageManager class>>forPackageNamed: (in category 'instance creation') ----- - ----- Method: MCPackageManager class>>forPackageNamed: (in category 'as yet unclassified') ----- forPackageNamed: aString ^ self registry detect: [ : each | each packageName = aString ]! Item was changed: + ----- Method: MCPackageManager class>>initialize (in category 'class initialization') ----- - ----- Method: MCPackageManager class>>initialize (in category 'as yet unclassified') ----- initialize "Remove this later" Smalltalk at: #SystemChangeNotifier ifPresent:[:cls| (cls uniqueInstance) noMoreNotificationsFor: self. ].! Item was changed: + ----- Method: MCPackageManager class>>registry (in category 'private') ----- - ----- Method: MCPackageManager class>>registry (in category 'as yet unclassified') ----- registry ^ registry ifNil: [registry := Dictionary new]! Item was changed: + ----- Method: MCPatch class>>fromBase:target: (in category 'instance creation') ----- - ----- Method: MCPatch class>>fromBase:target: (in category 'create') ----- fromBase: baseSnapshot target: targetSnapshot ^ self new initializeWithBase: baseSnapshot target: targetSnapshot! Item was changed: + ----- Method: MCPatchOperation>>isClassPatch (in category 'testing') ----- - ----- Method: MCPatchOperation>>isClassPatch (in category 'as yet unclassified') ----- isClassPatch ^false! Item was changed: + ----- Method: MCPatchOperation>>isUnchangedMethod (in category 'testing') ----- - ----- Method: MCPatchOperation>>isUnchangedMethod (in category 'as yet unclassified') ----- isUnchangedMethod "true if this is a modification of a method where only the timestamp changed" ^false! Item was changed: + ----- Method: MCPatchOperation>>targetClass (in category 'accessing') ----- - ----- Method: MCPatchOperation>>targetClass (in category 'as yet unclassified') ----- targetClass self subclassResponsibility.! Item was changed: + ----- Method: MCPatcher class>>apply:to: (in category 'applying') ----- - ----- Method: MCPatcher class>>apply:to: (in category 'as yet unclassified') ----- apply: aPatch to: aSnapshot | loader | loader := self snapshot: aSnapshot. aPatch applyTo: loader. ^ loader patchedSnapshot! Item was changed: + ----- Method: MCPatcher class>>snapshot: (in category 'instance creation') ----- - ----- Method: MCPatcher class>>snapshot: (in category 'as yet unclassified') ----- snapshot: aSnapshot ^ self new initializeWithSnapshot: aSnapshot! Item was changed: + ----- Method: MCPatcher>>addDefinition: (in category 'accessing') ----- - ----- Method: MCPatcher>>addDefinition: (in category 'as yet unclassified') ----- addDefinition: aDefinition definitions add: aDefinition! Item was changed: + ----- Method: MCPatcher>>initializeWithSnapshot: (in category 'initialize-release') ----- - ----- Method: MCPatcher>>initializeWithSnapshot: (in category 'as yet unclassified') ----- initializeWithSnapshot: aSnapshot definitions := MCDefinitionIndex definitions: aSnapshot definitions! Item was changed: + ----- Method: MCPatcher>>modifyDefinition:to: (in category 'applying') ----- - ----- Method: MCPatcher>>modifyDefinition:to: (in category 'as yet unclassified') ----- modifyDefinition: baseDefinition to: targetDefinition self addDefinition: targetDefinition! Item was changed: + ----- Method: MCPatcher>>patchedSnapshot (in category 'applying') ----- - ----- Method: MCPatcher>>patchedSnapshot (in category 'as yet unclassified') ----- patchedSnapshot ^ MCSnapshot fromDefinitions: definitions definitions! Item was changed: + ----- Method: MCPatcher>>removeDefinition: (in category 'accessing') ----- - ----- Method: MCPatcher>>removeDefinition: (in category 'as yet unclassified') ----- removeDefinition: aDefinition definitions remove: aDefinition! Item was changed: + ----- Method: MCPoolImportDefinition class>>type (in category 'accessing') ----- - ----- Method: MCPoolImportDefinition class>>type (in category 'as yet unclassified') ----- type ^ #pool! Item was changed: + ----- Method: MCPostscriptDefinition class>>scriptSelector (in category 'private - instance creation') ----- - ----- Method: MCPostscriptDefinition class>>scriptSelector (in category 'as yet unclassified') ----- scriptSelector ^ #postscript! Item was changed: + ----- Method: MCPreambleDefinition class>>scriptSelector (in category 'private - instance creation') ----- - ----- Method: MCPreambleDefinition class>>scriptSelector (in category 'as yet unclassified') ----- scriptSelector ^ #preamble! Item was changed: + ----- Method: MCRemoval class>>of: (in category 'instance creation') ----- - ----- Method: MCRemoval class>>of: (in category 'as yet unclassified') ----- of: aDefinition ^ self new intializeWithDefinition: aDefinition! Item was changed: + ----- Method: MCRemoval>>= (in category 'comparing') ----- - ----- Method: MCRemoval>>= (in category 'as yet unclassified') ----- = other ^ other isRemoval and: [definition = other definition]! Item was changed: + ----- Method: MCRemoval>>hash (in category 'comparing') ----- - ----- Method: MCRemoval>>hash (in category 'as yet unclassified') ----- hash ^ definition hash! Item was changed: + ----- Method: MCRemoval>>inverse (in category 'accessing') ----- - ----- Method: MCRemoval>>inverse (in category 'as yet unclassified') ----- inverse ^ MCAddition of: definition! Item was changed: + ----- Method: MCRemoval>>isClassPatch (in category 'testing') ----- - ----- Method: MCRemoval>>isClassPatch (in category 'as yet unclassified') ----- isClassPatch ^definition isClassDefinition! Item was changed: + ----- Method: MCRemovalPostscriptDefinition class>>scriptSelector (in category 'private - instance creation') ----- - ----- Method: MCRemovalPostscriptDefinition class>>scriptSelector (in category 'as yet unclassified') ----- scriptSelector ^ #postscriptOfRemoval ! Item was changed: + ----- Method: MCRemovalPreambleDefinition class>>scriptSelector (in category 'private - instance creation') ----- - ----- Method: MCRemovalPreambleDefinition class>>scriptSelector (in category 'as yet unclassified') ----- scriptSelector ^ #preambleOfRemoval! Item was changed: + ----- Method: MCRepository>>description (in category 'user interface') ----- - ----- Method: MCRepository>>description (in category 'accessing') ----- description ^ self class name! Item was changed: + ----- Method: MCRepository>>morphicOpen (in category 'user interface') ----- - ----- Method: MCRepository>>morphicOpen (in category 'ui') ----- morphicOpen self morphicOpen: nil! Item was changed: + ----- Method: MCRepository>>morphicOpen: (in category 'user interface') ----- - ----- Method: MCRepository>>morphicOpen: (in category 'ui') ----- morphicOpen: aWorkingCopy (MCRepositoryInspector repository: self workingCopy: aWorkingCopy) show! Item was changed: + ----- Method: MCRepository>>notificationForVersion: (in category 'notifying') ----- - ----- Method: MCRepository>>notificationForVersion: (in category 'accessing') ----- notificationForVersion: aVersion ^ MCVersionNotification version: aVersion repository: self! Item was changed: + ----- Method: MCRepository>>notifyList (in category 'notifying') ----- - ----- Method: MCRepository>>notifyList (in category 'accessing') ----- notifyList ^ #()! Item was changed: + ----- Method: MCRepository>>openAndEditTemplateCopy (in category 'user interface') ----- - ----- Method: MCRepository>>openAndEditTemplateCopy (in category 'ui') ----- openAndEditTemplateCopy ^ self class fillInTheBlankConfigure: (self asCreationTemplate ifNil: [^nil])! Item was changed: + ----- Method: MCRepository>>sendNotificationsForVersion: (in category 'notifying') ----- - ----- Method: MCRepository>>sendNotificationsForVersion: (in category 'accessing') ----- sendNotificationsForVersion: aVersion | notification notifyList | notifyList := self notifyList. notifyList isEmpty ifFalse: [notification := self notificationForVersion: aVersion. notifyList do: [:ea | notification notify: ea]]! Item was changed: + ----- Method: MCRepository>>storeVersion: (in category 'storing') ----- - ----- Method: MCRepository>>storeVersion: (in category 'accessing') ----- storeVersion: aMCVersionOrConfiguration self basicStoreVersion: (self prepareVersionForStorage: aMCVersionOrConfiguration). self sendNotificationsForVersion: aMCVersionOrConfiguration! Item was changed: + ----- Method: MCRepository>>wasRemoved (in category 'user interface') ----- - ----- Method: MCRepository>>wasRemoved (in category 'ui') ----- wasRemoved "Subclasses may override to, for example, disconnect a db session."! Item was changed: + ----- Method: MCSMCacheRepository>>description (in category 'user interface') ----- - ----- Method: MCSMCacheRepository>>description (in category 'accessing') ----- description ^ smCache directory pathName! Item was changed: + ----- Method: MCSMReleaseRepository class>>creationTemplate (in category 'configuring') ----- - ----- Method: MCSMReleaseRepository class>>creationTemplate (in category 'as yet unclassified') ----- creationTemplate ^ 'MCSMReleaseRepository package: ''mypackage'' user: ''squeak'' password: ''squeak''' ! Item was changed: + ----- Method: MCSMReleaseRepository class>>description (in category 'configuring') ----- - ----- Method: MCSMReleaseRepository class>>description (in category 'as yet unclassified') ----- description ^ 'SqueakMap Release'! Item was changed: + ----- Method: MCSMReleaseRepository class>>fillInTheBlankRequest (in category 'configuring') ----- - ----- Method: MCSMReleaseRepository class>>fillInTheBlankRequest (in category 'as yet unclassified') ----- fillInTheBlankRequest ^ 'SqueakMap Release Repository:' ! Item was changed: + ----- Method: MCSMReleaseRepository class>>morphicConfigure (in category 'configuring') ----- - ----- Method: MCSMReleaseRepository class>>morphicConfigure (in category 'as yet unclassified') ----- morphicConfigure ^ self fillInTheBlankConfigure! Item was changed: + ----- Method: MCSMReleaseRepository class>>package:user:password: (in category 'instance creation') ----- - ----- Method: MCSMReleaseRepository class>>package:user:password: (in category 'as yet unclassified') ----- package: packageString user: userString password: passString ^ self basicNew initializeWithPackage: packageString user: userString password: passString! Item was changed: + ----- Method: MCSMReleaseRepository>>basicStoreVersion: (in category 'private') ----- - ----- Method: MCSMReleaseRepository>>basicStoreVersion: (in category 'as yet unclassified') ----- basicStoreVersion: aVersion | url | url := self uploadVersion: aVersion. self releaseVersion: aVersion url: url! Item was changed: + ----- Method: MCSMReleaseRepository>>checkResult: (in category 'private') ----- - ----- Method: MCSMReleaseRepository>>checkResult: (in category 'as yet unclassified') ----- checkResult: resultString (#( 'HTTP/1.1 201 ' 'HTTP/1.1 200 ' 'HTTP/1.0 201 ' 'HTTP/1.0 200 ') anySatisfy: [:code | resultString beginsWith: code ]) ifFalse: [self error: resultString]. ! Item was changed: + ----- Method: MCSMReleaseRepository>>description (in category 'user interface') ----- - ----- Method: MCSMReleaseRepository>>description (in category 'as yet unclassified') ----- description ^ 'sm://', packageName! Item was changed: + ----- Method: MCSMReleaseRepository>>initializeWithPackage:user:password: (in category 'private') ----- - ----- Method: MCSMReleaseRepository>>initializeWithPackage:user:password: (in category 'as yet unclassified') ----- initializeWithPackage: packageString user: userString password: passString packageName := packageString. user := userString. password := passString. ! Item was changed: + ----- Method: MCSMReleaseRepository>>releaseVersion:url: (in category 'private') ----- - ----- Method: MCSMReleaseRepository>>releaseVersion:url: (in category 'as yet unclassified') ----- releaseVersion: aVersion url: urlString | result | result := HTTPSocket httpPost: self squeakMapUrl, '/packagebyname/', packageName, '/newrelease' args: {'version' -> {(aVersion info versionNumber)}. 'note' -> {aVersion info message}. 'downloadURL' -> {urlString}} user: user passwd: password. result contents size > 4 ifTrue: [self error: result contents] ! Item was changed: + ----- Method: MCSMReleaseRepository>>squeakMapUrl (in category 'constants') ----- - ----- Method: MCSMReleaseRepository>>squeakMapUrl (in category 'as yet unclassified') ----- squeakMapUrl ^ 'http://localhost:9070/sm' ! Item was changed: + ----- Method: MCSMReleaseRepository>>stringForVersion: (in category 'private') ----- - ----- Method: MCSMReleaseRepository>>stringForVersion: (in category 'as yet unclassified') ----- stringForVersion: aVersion | stream | stream := RWBinaryOrTextStream on: String new. aVersion fileOutOn: stream. ^ stream contents! Item was changed: + ----- Method: MCSMReleaseRepository>>uploadVersion: (in category 'private') ----- - ----- Method: MCSMReleaseRepository>>uploadVersion: (in category 'as yet unclassified') ----- uploadVersion: aVersion | result stream | result := HTTPSocket httpPut: (self stringForVersion: aVersion) to: self squeakMapUrl, '/upload/', aVersion fileName user: user passwd: password. self checkResult: result. stream := result readStream. stream upToAll: 'http://'. ^ 'http://', stream upToEnd! Item was changed: + ----- Method: MCScanner class>>scan: (in category 'instance creation') ----- - ----- Method: MCScanner class>>scan: (in category 'as yet unclassified') ----- scan: aStream ^ (self new stream: aStream) next! Item was changed: + ----- Method: MCScanner class>>scanTokens: (in category 'instance creation') ----- - ----- Method: MCScanner class>>scanTokens: (in category 'as yet unclassified') ----- scanTokens: aString "compatibility" ^{ self scan: aString readStream }! Item was changed: + ----- Method: MCScanner>>next (in category 'scanning') ----- - ----- Method: MCScanner>>next (in category 'as yet unclassified') ----- next | c | stream skipSeparators. (c := stream peek) == $# ifTrue: [c := stream next; peek]. c == $' ifTrue: [^ self nextString]. c == $( ifTrue: [^ self nextArray]. c isAlphaNumeric ifTrue: [^ self nextSymbol]. self error: 'Unknown token type'! Item was changed: + ----- Method: MCScanner>>nextArray (in category 'scanning') ----- - ----- Method: MCScanner>>nextArray (in category 'as yet unclassified') ----- nextArray stream next. "(" ^ Array streamContents: [:s | [stream skipSeparators. (stream peek == $)) or: [stream atEnd]] whileFalse: [s nextPut: self next]. stream next == $) ifFalse: [self error: 'Unclosed array']]! Item was changed: + ----- Method: MCScanner>>nextString (in category 'scanning') ----- - ----- Method: MCScanner>>nextString (in category 'as yet unclassified') ----- nextString ^ stream nextDelimited: $'! Item was changed: + ----- Method: MCScanner>>nextSymbol (in category 'scanning') ----- - ----- Method: MCScanner>>nextSymbol (in category 'as yet unclassified') ----- nextSymbol ^ (String streamContents: [:s | [stream peek isAlphaNumeric] whileTrue: [s nextPut: stream next]]) asSymbol ! Item was changed: + ----- Method: MCScanner>>stream: (in category 'accessing') ----- - ----- Method: MCScanner>>stream: (in category 'as yet unclassified') ----- stream: aStream stream := aStream! Item was changed: + ----- Method: MCScriptDefinition class>>from: (in category 'instance creation') ----- - ----- Method: MCScriptDefinition class>>from: (in category 'as yet unclassified') ----- from: aPackageInfo ^ self script: (aPackageInfo perform: self scriptSelector) contents asString packageName: aPackageInfo name! Item was changed: + ----- Method: MCScriptDefinition class>>script:packageName: (in category 'instance creation') ----- - ----- Method: MCScriptDefinition class>>script:packageName: (in category 'as yet unclassified') ----- script: aString packageName: packageString ^ self instanceLike: (self new initializeWithScript: aString packageName: packageString)! Item was changed: + ----- Method: MCScriptDefinition class>>scriptSelector (in category 'private - instance creation') ----- - ----- Method: MCScriptDefinition class>>scriptSelector (in category 'as yet unclassified') ----- scriptSelector self subclassResponsibility! Item was changed: + ----- Method: MCScriptDefinition class>>scriptSelector:script:packageName: (in category 'instance creation') ----- - ----- Method: MCScriptDefinition class>>scriptSelector:script:packageName: (in category 'as yet unclassified') ----- scriptSelector: selectorString script: aString packageName: packageString ^ (self subclassForScriptSelector: selectorString) script: aString packageName: packageString! Item was changed: + ----- Method: MCScriptDefinition class>>subclassForScriptSelector: (in category 'private - instance creation') ----- - ----- Method: MCScriptDefinition class>>subclassForScriptSelector: (in category 'as yet unclassified') ----- subclassForScriptSelector: selectorString ^self allSubclasses detect: [:ea | ea scriptSelector = selectorString]! Item was changed: + ----- Method: MCScriptParser class>>pattern (in category 'constants') ----- - ----- Method: MCScriptParser class>>pattern (in category 'as yet unclassified') ----- pattern ^'(PackageInfo named: *'! Item was changed: + ----- Method: MCScriptParser>>addDefinitionsTo: (in category 'evaluating') ----- - ----- Method: MCScriptParser>>addDefinitionsTo: (in category 'as yet unclassified') ----- addDefinitionsTo: aCollection | tokens definition | tokens := Scanner new scanTokens: source. definition := MCScriptDefinition scriptSelector: tokens second allButLast script: tokens third packageName: tokens first third. aCollection add: definition.! Item was changed: + ----- Method: MCSmtpRepository class>>description (in category 'configuring') ----- - ----- Method: MCSmtpRepository class>>description (in category 'as yet unclassified') ----- description ^ 'SMTP'! Item was changed: + ----- Method: MCSmtpRepository class>>morphicConfigure (in category 'configuring') ----- - ----- Method: MCSmtpRepository class>>morphicConfigure (in category 'as yet unclassified') ----- morphicConfigure | address | address := UIManager default request: 'Email address:'. ^ address isEmpty ifFalse: [self new emailAddress: address]! Item was changed: + ----- Method: MCSmtpRepository>>basicStoreVersion: (in category 'private') ----- - ----- Method: MCSmtpRepository>>basicStoreVersion: (in category 'as yet unclassified') ----- basicStoreVersion: aVersion MailSender sendMessage: (self messageForVersion: aVersion)! Item was changed: + ----- Method: MCSmtpRepository>>bodyForVersion: (in category 'converting') ----- - ----- Method: MCSmtpRepository>>bodyForVersion: (in category 'as yet unclassified') ----- bodyForVersion: aVersion ^ String streamContents: [ :s | s nextPutAll: 'from version info:'; cr; cr. s nextPutAll: aVersion info summary]! Item was changed: + ----- Method: MCSmtpRepository>>description (in category 'user interface') ----- - ----- Method: MCSmtpRepository>>description (in category 'as yet unclassified') ----- description ^ 'mailto://', email! Item was changed: + ----- Method: MCSmtpRepository>>emailAddress: (in category 'accessing') ----- - ----- Method: MCSmtpRepository>>emailAddress: (in category 'as yet unclassified') ----- emailAddress: aString email := aString ! Item was changed: + ----- Method: MCSmtpRepository>>messageForVersion: (in category 'converting') ----- - ----- Method: MCSmtpRepository>>messageForVersion: (in category 'as yet unclassified') ----- messageForVersion: aVersion | message data | message := MailMessage empty. message setField: 'from' toString: MailSender userName. message setField: 'to' toString: email. message setField: 'subject' toString: (self subjectForVersion: aVersion). message body: (MIMEDocument contentType: 'text/plain' content: (self bodyForVersion: aVersion)). "Prepare the gzipped data" data := RWBinaryOrTextStream on: String new. aVersion fileOutOn: data. message addAttachmentFrom: data reset withName: aVersion fileName. ^ message! Item was changed: + ----- Method: MCSmtpRepository>>subjectForVersion: (in category 'converting') ----- - ----- Method: MCSmtpRepository>>subjectForVersion: (in category 'as yet unclassified') ----- subjectForVersion: aVersion ^ '[Package] ', aVersion info name! Item was changed: + ----- Method: MCSnapshotBrowser class>>forSnapshot: (in category 'instance creation') ----- - ----- Method: MCSnapshotBrowser class>>forSnapshot: (in category 'as yet unclassified') ----- forSnapshot: aSnapshot ^ self new snapshot: aSnapshot! Item was changed: + ----- Method: MCSnapshotReader class>>snapshotFromStream: (in category 'converting') ----- - ----- Method: MCSnapshotReader class>>snapshotFromStream: (in category 'as yet unclassified') ----- snapshotFromStream: aStream ^ (self on: aStream) snapshot! Item was changed: + ----- Method: MCSnapshotReader>>definitions (in category 'loading') ----- - ----- Method: MCSnapshotReader>>definitions (in category 'as yet unclassified') ----- definitions definitions ifNil: [self loadDefinitions]. ^ definitions! Item was changed: + ----- Method: MCSnapshotReader>>snapshot (in category 'accessing') ----- - ----- Method: MCSnapshotReader>>snapshot (in category 'as yet unclassified') ----- snapshot ^ MCSnapshot fromDefinitions: self definitions! Item was changed: + ----- Method: MCStReader class>>extension (in category 'constants') ----- - ----- Method: MCStReader class>>extension (in category 'as yet unclassified') ----- extension ^ 'st'! Item was changed: + ----- Method: MCStReader>>addDefinitionsFromDoit: (in category 'private') ----- - ----- Method: MCStReader>>addDefinitionsFromDoit: (in category 'as yet unclassified') ----- addDefinitionsFromDoit: aString (MCDoItParser forDoit: aString) ifNotNil: [:parser | parser addDefinitionsTo: definitions]! Item was changed: + ----- Method: MCStReader>>categoryFromDoIt: (in category 'private') ----- - ----- Method: MCStReader>>categoryFromDoIt: (in category 'as yet unclassified') ----- categoryFromDoIt: aString | tokens | tokens := Scanner new scanTokens: aString. tokens size = 3 ifFalse: [self error: 'Unrecognized category definition']. ^ tokens at: 3! Item was changed: + ----- Method: MCStReader>>classDefinitionFrom: (in category 'converting') ----- - ----- Method: MCStReader>>classDefinitionFrom: (in category 'as yet unclassified') ----- classDefinitionFrom: aPseudoClass | tokens traitCompositionString lastIndex classTraitCompositionString typeOfSubclass className | tokens := Scanner new scanTokens: aPseudoClass definition. traitCompositionString := ((ReadStream on: aPseudoClass definition) match: 'uses:'; upToAll: 'instanceVariableNames:') withBlanksTrimmed. classTraitCompositionString := ((ReadStream on: aPseudoClass metaClass definition asString) match: 'uses:'; upToAll: 'instanceVariableNames:') withBlanksTrimmed. traitCompositionString isEmpty ifTrue: [traitCompositionString := '{}']. classTraitCompositionString isEmpty ifTrue: [classTraitCompositionString := '{}']. lastIndex := tokens size. className := tokens at: 3. typeOfSubclass := self typeOfSubclass: (tokens at: 2). "Compiled code classes are special cases of the #bytes class type" (#bytes == typeOfSubclass and: [self compiledCodeClassNames includes: className]) ifTrue: [typeOfSubclass := #compiledMethod]. ^ MCClassDefinition name: className superclassName: (tokens at: 1) traitComposition: traitCompositionString classTraitComposition: classTraitCompositionString category: (tokens at: lastIndex) instVarNames: ((tokens at: lastIndex - 6) findTokens: ' ') classVarNames: ((tokens at: lastIndex - 4) findTokens: ' ') poolDictionaryNames: ((tokens at: lastIndex - 2) findTokens: ' ') classInstVarNames: (self classInstVarNamesFor: aPseudoClass) type: typeOfSubclass comment: (self commentFor: aPseudoClass) commentStamp: (self commentStampFor: aPseudoClass)! Item was changed: + ----- Method: MCStReader>>classInstVarNamesFor: (in category 'converting') ----- - ----- Method: MCStReader>>classInstVarNamesFor: (in category 'as yet unclassified') ----- classInstVarNamesFor: aPseudoClass | tokens | self flag: #traits. aPseudoClass metaClass hasDefinition ifFalse: [^ #()]. tokens := Scanner new scanTokens: aPseudoClass metaClass definition. "tokens size = 4 ifFalse: [self error: 'Unrecognized metaclass definition']." ^ tokens last findTokens: ' '! Item was changed: + ----- Method: MCStReader>>commentFor: (in category 'converting') ----- - ----- Method: MCStReader>>commentFor: (in category 'as yet unclassified') ----- commentFor: aPseudoClass | comment | comment := aPseudoClass organization classComment. ^ comment asString = '' ifTrue: [comment] ifFalse: [comment string]! Item was changed: + ----- Method: MCStReader>>commentStampFor: (in category 'converting') ----- - ----- Method: MCStReader>>commentStampFor: (in category 'as yet unclassified') ----- commentStampFor: aPseudoClass | comment | comment := aPseudoClass organization classComment. ^ [comment stamp] on: MessageNotUnderstood do: [nil]! Item was changed: + ----- Method: MCStReader>>compiledCodeClassNames (in category 'private') ----- - ----- Method: MCStReader>>compiledCodeClassNames (in category 'as yet unclassified') ----- compiledCodeClassNames "Answer the names of classes for which the type is #compiledMethod. Traditionally, this was only class CompiledMehod, but later refactorings require that CompiledCode and its subclasses be treated as type #compiledMethod." ^{ #CompiledCode . #CompiledBlock . #CompiledMethod }! Item was changed: + ----- Method: MCStReader>>methodDefinitionsFor: (in category 'converting') ----- - ----- Method: MCStReader>>methodDefinitionsFor: (in category 'as yet unclassified') ----- methodDefinitionsFor: aPseudoClass ^ aPseudoClass selectors collect: [:ea | MCMethodDefinition className: aPseudoClass name classIsMeta: aPseudoClass isMeta selector: ea category: (aPseudoClass organization categoryOfElement: ea) timeStamp: (aPseudoClass stampAt: ea) source: (aPseudoClass sourceCodeAt: ea)]! Item was changed: + ----- Method: MCStReader>>systemOrganizationFromRecords: (in category 'converting') ----- - ----- Method: MCStReader>>systemOrganizationFromRecords: (in category 'as yet unclassified') ----- systemOrganizationFromRecords: changeRecords | categories | categories := changeRecords select: [:ea | 'SystemOrganization*' match: ea string] thenCollect: [:ea | (self categoryFromDoIt: ea string)]. ^ categories isEmpty ifFalse: [MCOrganizationDefinition categories: categories asArray]! Item was changed: + ----- Method: MCStReader>>traitDefinitionFrom: (in category 'converting') ----- - ----- Method: MCStReader>>traitDefinitionFrom: (in category 'as yet unclassified') ----- traitDefinitionFrom: aPseudoTrait | tokens traitCompositionString lastIndex | tokens := Scanner new scanTokens: aPseudoTrait definition. traitCompositionString := ((ReadStream on: aPseudoTrait definition) match: 'uses:'; upToAll: 'category:') withBlanksTrimmed. traitCompositionString isEmpty ifTrue: [traitCompositionString := '{}']. lastIndex := tokens size. ^ MCTraitDefinition name: (tokens at: 3) traitComposition: traitCompositionString category: (tokens at: lastIndex) comment: (self commentFor: aPseudoTrait) commentStamp: (self commentStampFor: aPseudoTrait)! Item was changed: + ----- Method: MCStReader>>typeOfSubclass: (in category 'private') ----- - ----- Method: MCStReader>>typeOfSubclass: (in category 'as yet unclassified') ----- typeOfSubclass: aSymbol #( (subclass: normal) (variableSubclass: variable) (variableByteSubclass: bytes) (variableDoubleByteSubclass: shorts) (variableWordSubclass: words) (variableDoubleWordSubclass: longs) (weakSubclass: weak) (ephemeronSubclass: ephemeron) (immediateSubclass: immediate) ) do: [:ea | ea first = aSymbol ifTrue: [^ ea second]]. self error: 'Unrecognized class definition'! Item was changed: + ----- Method: MCStWriter class>>readerClass (in category 'accessing') ----- - ----- Method: MCStWriter class>>readerClass (in category 'as yet unclassified') ----- readerClass ^ MCStReader! Item was changed: + ----- Method: MCSubDirectoryRepository>>allDirectories (in category 'enumerating') ----- - ----- Method: MCSubDirectoryRepository>>allDirectories (in category 'enumeration') ----- allDirectories | remaining dir dirs | remaining := OrderedCollection new. dirs := OrderedCollection new. remaining addLast: directory. [remaining isEmpty] whileFalse: [dir := remaining removeFirst. dirs add: dir. dir entries do: [:ent | ent isDirectory ifTrue: [remaining addLast: (dir directoryNamed: ent name)]]]. ^ dirs! Item was changed: + ----- Method: MCSubDirectoryRepository>>allFileNames (in category 'enumerating') ----- - ----- Method: MCSubDirectoryRepository>>allFileNames (in category 'enumeration') ----- allFileNames "sorting {entry. dirName. name}" | result | result := OrderedCollection new. self allDirectories do: [:dir | dir entries do: [:ent | ent isDirectory ifFalse: [result addLast: {ent. dir fullName. ent name}]]]. ^result sort: [:a :b | a first modificationTime >= b first modificationTime ]; replace: [:ea | ea third asMCVersionName]! Item was changed: + ----- Method: MCSubDirectoryRepository>>findFullNameForReading: (in category 'private') ----- - ----- Method: MCSubDirectoryRepository>>findFullNameForReading: (in category 'as yet unclassified') ----- findFullNameForReading: aBaseName "Answer the latest version of aBaseName" | possible | possible := OrderedCollection new. self allDirectories do: [:dir | dir entries do: [:ent | ent isDirectory ifFalse: [ (ent name = aBaseName) ifTrue: [ possible addLast: {ent. dir fullNameFor: ent name}]]]]. possible isEmpty ifTrue: [ ^nil ]. ^(possible detectMin: [ :each | each first modificationTime ]) second! Item was changed: + ----- Method: MCSubDirectoryRepository>>findFullNameForWriting: (in category 'private') ----- - ----- Method: MCSubDirectoryRepository>>findFullNameForWriting: (in category 'as yet unclassified') ----- findFullNameForWriting: aBaseName | possible split prefix fpattern now | split := directory splitNameVersionExtensionFor: aBaseName. fpattern := split first, '*'. possible := OrderedCollection new. now := Time totalSeconds. prefix := directory pathParts size. self allDirectories do: [:dir | | parts dirScore fileScore | parts := dir pathParts allButFirst: prefix. dirScore := (parts select: [ :part | fpattern match: part ]) size. fileScore := (dir entries collect: [ :ent | (ent isDirectory not and: [ fpattern match: ent name ]) ifFalse: [ SmallInteger maxVal ] ifTrue: [ now - ent modificationTime ]]). "minimum age" fileScore := fileScore isEmpty ifTrue: [ SmallInteger maxVal ] ifFalse: [ fileScore min ]. possible add: { dirScore. fileScore. dir } ]. possible sort: [ :a :b | a first = b first ifTrue: [ a second = b second ifFalse: [ a second < b second ] ifTrue: [ a third fullName size < b third fullName size ]] ifFalse: [ a first > b first ] ]. ^(possible first third) fullNameFor: aBaseName! Item was changed: + ----- Method: MCSubDirectoryRepository>>readStreamForFileNamed:do: (in category 'private') ----- - ----- Method: MCSubDirectoryRepository>>readStreamForFileNamed:do: (in category 'as yet unclassified') ----- readStreamForFileNamed: aString do: aBlock | file val | file := FileStream readOnlyFileNamed: (self findFullNameForReading: aString). val := aBlock value: file. file close. ^ val! Item was changed: + ----- Method: MCSubDirectoryRepository>>writeStreamForFileNamed:replace:do: (in category 'private') ----- - ----- Method: MCSubDirectoryRepository>>writeStreamForFileNamed:replace:do: (in category 'as yet unclassified') ----- writeStreamForFileNamed: aString replace: aBoolean do: aBlock | file | file := aBoolean ifTrue: [FileStream forceNewFileNamed: (self findFullNameForReading: aString)] ifFalse: [FileStream newFileNamed: (self findFullNameForWriting: aString)]. aBlock value: file. file close! Item was changed: + ----- Method: MCSystemCategoryParser class>>pattern (in category 'constants') ----- - ----- Method: MCSystemCategoryParser class>>pattern (in category 'as yet unclassified') ----- pattern ^ 'SystemOrganization*'! Item was changed: + ----- Method: MCSystemCategoryParser>>addDefinitionsTo: (in category 'evaluating') ----- - ----- Method: MCSystemCategoryParser>>addDefinitionsTo: (in category 'as yet unclassified') ----- addDefinitionsTo: aCollection | definition | definition := aCollection detect: [:ea | ea isOrganizationDefinition ] ifNone: [aCollection add: (MCOrganizationDefinition categories: #())]. definition categories: (definition categories copyWith: self category).! Item was changed: + ----- Method: MCSystemCategoryParser>>category (in category 'evaluating') ----- - ----- Method: MCSystemCategoryParser>>category (in category 'as yet unclassified') ----- category | tokens | tokens := Scanner new scanTokens: source. tokens size = 3 ifFalse: [self error: 'Unrecognized category definition']. ^ tokens at: 3! Item was changed: + ----- Method: MCThreeWayMerger class>>base:patch: (in category 'instance creation') ----- - ----- Method: MCThreeWayMerger class>>base:patch: (in category 'as yet unclassified') ----- base: aSnapshot patch: aPatch aPatch isEmpty ifTrue: [MCNoChangesException signal]. ^ self new addBaseSnapshot: aSnapshot; applyPatch: aPatch; yourself ! Item was changed: + ----- Method: MCThreeWayMerger class>>base:target:ancestor: (in category 'instance creation') ----- - ----- Method: MCThreeWayMerger class>>base:target:ancestor: (in category 'as yet unclassified') ----- base: aSnapshot target: targetSnapshot ancestor: ancestorSnapshot ^ self base: aSnapshot patch: (targetSnapshot patchRelativeToBase: ancestorSnapshot)! Item was changed: + ----- Method: MCThreeWayMerger class>>new (in category 'instance creation') ----- - ----- Method: MCThreeWayMerger class>>new (in category 'as yet unclassified') ----- new ^ self basicNew initialize! Item was changed: + ----- Method: MCThreeWayMerger>>applyPatch: (in category 'applying') ----- - ----- Method: MCThreeWayMerger>>applyPatch: (in category 'as yet unclassified') ----- applyPatch: aPatch aPatch applyTo: self! Item was changed: + ----- Method: MCThreeWayMerger>>applyTo: (in category 'applying') ----- - ----- Method: MCThreeWayMerger>>applyTo: (in category 'as yet unclassified') ----- applyTo: anObject super applyTo: anObject. self operations do: [:ea | ea applyTo: anObject]! Item was changed: + ----- Method: MCThreeWayMerger>>initialize (in category 'initialize-release') ----- - ----- Method: MCThreeWayMerger>>initialize (in category 'as yet unclassified') ----- initialize index := MCDefinitionIndex new. provisions := Set new! Item was changed: + ----- Method: MCThreeWayMerger>>operations (in category 'accessing') ----- - ----- Method: MCThreeWayMerger>>operations (in category 'as yet unclassified') ----- operations ^ operations ifNil: [operations := OrderedCollection new]! Item was changed: + ----- Method: MCThreeWayMerger>>provisions (in category 'accessing') ----- - ----- Method: MCThreeWayMerger>>provisions (in category 'as yet unclassified') ----- provisions ^ provisions! Item was changed: + ----- Method: MCToolWindowBuilder class>>builder:tool: (in category 'instance creation') ----- - ----- Method: MCToolWindowBuilder class>>builder:tool: (in category 'as yet unclassified') ----- builder: aBuilder tool: aTool ^ self basicNew initializeWithBuilder: aBuilder tool: aTool! Item was changed: + ----- Method: MCTraitDefinition class>>name:traitComposition:category:comment:commentStamp: (in category 'instance creation') ----- - ----- Method: MCTraitDefinition class>>name:traitComposition:category:comment:commentStamp: (in category 'as yet unclassified') ----- name: classNameString traitComposition: traitCompositionString category: categoryString comment: commentString commentStamp: commentStamp ^ self instanceLike: (self new initializeWithName: classNameString traitComposition: traitCompositionString category: categoryString comment: commentString commentStamp: commentStamp) ! Item was changed: + ----- Method: MCTraitParser class>>pattern (in category 'constants') ----- - ----- Method: MCTraitParser class>>pattern (in category 'as yet unclassified') ----- pattern ^ 'Trait named:*'! Item was changed: + ----- Method: MCVariableDefinition class>>name: (in category 'instance creation') ----- - ----- Method: MCVariableDefinition class>>name: (in category 'as yet unclassified') ----- name: aString ^ self new name: aString ! Item was changed: + ----- Method: MCVersionDependency class>>package:info: (in category 'instance creation') ----- - ----- Method: MCVersionDependency class>>package:info: (in category 'as yet unclassified') ----- package: aPackage info: aVersionInfo ^ self basicNew initializeWithPackage: aPackage info: aVersionInfo! Item was changed: + ----- Method: MCVersionInfo class>>name:id:message:date:time:author:ancestors: (in category 'instance creation') ----- - ----- Method: MCVersionInfo class>>name:id:message:date:time:author:ancestors: (in category 'as yet unclassified') ----- name: vName id: id message: message date: date time: time author: author ancestors: ancestors ^ self name: vName id: id message: message date: date time: time author: author ancestors: ancestors stepChildren: #()! Item was changed: + ----- Method: MCVersionInfo class>>name:id:message:date:time:author:ancestors:stepChildren: (in category 'instance creation') ----- - ----- Method: MCVersionInfo class>>name:id:message:date:time:author:ancestors:stepChildren: (in category 'as yet unclassified') ----- name: vName id: id message: message date: date time: time author: author ancestors: ancestors stepChildren: stepChildren ^ self new initializeWithName: vName id: id message: message date: date time: time author: author ancestors: ancestors stepChildren: stepChildren! Item was changed: + ----- Method: MCVersionInfoWriter>>isWritten: (in category 'testing') ----- - ----- Method: MCVersionInfoWriter>>isWritten: (in category 'as yet unclassified') ----- isWritten: aVersionInfo ^ self written includes: aVersionInfo! Item was changed: + ----- Method: MCVersionInfoWriter>>writeVersionInfo: (in category 'writing') ----- - ----- Method: MCVersionInfoWriter>>writeVersionInfo: (in category 'as yet unclassified') ----- writeVersionInfo: aVersionInfo (self isWritten: aVersionInfo) ifTrue: [^ stream nextPutAll: '(id ', aVersionInfo id asString printString, ')']. stream nextPut: $(. #(name message id date time author) do: [:sel | stream nextPutAll: sel. stream nextPut: $ . ((aVersionInfo perform: sel) ifNil: ['']) asString printOn: stream. stream nextPut: $ ]. stream nextPutAll: 'ancestors ('. aVersionInfo ancestors do: [:ea | self writeVersionInfo: ea]. stream nextPutAll: ') stepChildren ('. aVersionInfo stepChildren do: [:ea | self writeVersionInfo: ea]. stream nextPutAll: '))'. self wrote: aVersionInfo! Item was changed: + ----- Method: MCVersionInfoWriter>>written (in category 'accessing') ----- - ----- Method: MCVersionInfoWriter>>written (in category 'as yet unclassified') ----- written ^ written ifNil: [written := Set new]! Item was changed: + ----- Method: MCVersionInfoWriter>>wrote: (in category 'accessing') ----- - ----- Method: MCVersionInfoWriter>>wrote: (in category 'as yet unclassified') ----- wrote: aVersionInfo self written add: aVersionInfo! Item was changed: + ----- Method: MCVersionLoader class>>loadVersion: (in category 'loading') ----- - ----- Method: MCVersionLoader class>>loadVersion: (in category 'as yet unclassified') ----- loadVersion: aVersion self new addVersion: aVersion; load! Item was changed: + ----- Method: MCVersionLoader class>>new (in category 'instance creation') ----- - ----- Method: MCVersionLoader class>>new (in category 'as yet unclassified') ----- new ^ self basicNew initialize! Item was changed: + ----- Method: MCVersionMerger class>>mergeVersion: (in category 'merging') ----- - ----- Method: MCVersionMerger class>>mergeVersion: (in category 'as yet unclassified') ----- mergeVersion: aVersion self new addVersion: aVersion; mergeWithNameLike: aVersion info name! Item was changed: + ----- Method: MCVersionMerger class>>new (in category 'instance creation') ----- - ----- Method: MCVersionMerger class>>new (in category 'as yet unclassified') ----- new ^ self basicNew initialize! Item was changed: + ----- Method: MCVersionMerger>>addVersion: (in category 'accessing') ----- - ----- Method: MCVersionMerger>>addVersion: (in category 'as yet unclassified') ----- addVersion: aVersion records add: (MCMergeRecord version: aVersion). aVersion dependencies do: [:ea | | dep | dep := ea resolve. (records anySatisfy: [:r | r version = dep]) ifFalse: [self addVersion: dep]]! Item was changed: + ----- Method: MCVersionMerger>>initialize (in category 'initialize-release') ----- - ----- Method: MCVersionMerger>>initialize (in category 'as yet unclassified') ----- initialize records := OrderedCollection new. merger := MCThreeWayMerger new.! Item was changed: + ----- Method: MCVersionMerger>>merge (in category 'merging') ----- - ----- Method: MCVersionMerger>>merge (in category 'as yet unclassified') ----- merge records do: [:ea | merger addBaseSnapshot: ea packageSnapshot]. records do: [:ea | merger applyPatch: ea mergePatch]. self resolveConflicts ifTrue: [merger load. records do: [:ea | ea updateWorkingCopy]].! Item was changed: + ----- Method: MCVersionMerger>>mergeWithNameLike: (in category 'merging') ----- - ----- Method: MCVersionMerger>>mergeWithNameLike: (in category 'as yet unclassified') ----- mergeWithNameLike: baseName records do: [:ea | merger addBaseSnapshot: ea packageSnapshot]. records do: [:ea | merger applyPatch: ea mergePatch]. self resolveConflicts ifTrue: [merger loadWithNameLike: baseName. records do: [:ea | ea updateWorkingCopy]].! Item was changed: + ----- Method: MCVersionMerger>>resolveConflicts (in category 'testing') ----- - ----- Method: MCVersionMerger>>resolveConflicts (in category 'as yet unclassified') ----- resolveConflicts (records allSatisfy: [:ea | ea isAncestorMerge]) ifTrue: [MCNoChangesException signal. ^ false]. ^ ((MCMergeResolutionRequest new merger: merger) signal: 'Merging ', records first version info name) = true! Item was changed: + ----- Method: MCVersionNotification class>>version:repository: (in category 'instance creation') ----- - ----- Method: MCVersionNotification class>>version:repository: (in category 'as yet unclassified') ----- version: aVersion repository: aRepository ^ self basicNew initializeWithVersion: aVersion repository: aRepository! Item was changed: + ----- Method: MCVersionNotification>>fromAddress (in category 'accessing') ----- - ----- Method: MCVersionNotification>>fromAddress (in category 'as yet unclassified') ----- fromAddress ^ '[hidden email]'! Item was changed: + ----- Method: MCVersionNotification>>initializeWithVersion:repository: (in category 'private') ----- - ----- Method: MCVersionNotification>>initializeWithVersion:repository: (in category 'as yet unclassified') ----- initializeWithVersion: aVersion repository: aRepository version := aVersion. repository := aRepository. ancestor := repository closestAncestorVersionFor: version info ifNone: []. changes := ancestor ifNil: [#()] ifNotNil: [(version snapshot patchRelativeToBase: ancestor snapshot) operations sorted]! Item was changed: + ----- Method: MCVersionNotification>>messageText (in category 'accessing') ----- - ----- Method: MCVersionNotification>>messageText (in category 'as yet unclassified') ----- messageText ^ String streamContents: [:s | s nextPutAll: 'Committed to repository: ', repository description; cr; cr. s nextPutAll: version summary. changes isEmpty ifFalse: [s cr; cr. s nextPutAll: '-----------------------------------------------------'; cr. s nextPutAll: 'Changes since ', ancestor info name, ':'; cr. changes do: [:ea | s cr; nextPutAll: ea summary; cr. s nextPutAll: ea sourceString]]]! Item was changed: + ----- Method: MCVersionNotification>>messageTo: (in category 'private') ----- - ----- Method: MCVersionNotification>>messageTo: (in category 'as yet unclassified') ----- messageTo: aString | message | message := MailMessage empty. message setField: 'from' toString: self fromAddress. message setField: 'to' toString: aString. message setField: 'subject' toString: '[MC] ', version info name. message body: (MIMEDocument contentType: 'text/plain' content: self messageText). ^ message! Item was changed: + ----- Method: MCVersionNotification>>notify: (in category 'notifying') ----- - ----- Method: MCVersionNotification>>notify: (in category 'as yet unclassified') ----- notify: aString | message | message := self messageTo: aString. SMTPClient deliverMailFrom: message from to: { message to } text: message text usingServer: MailSender smtpServer! Item was changed: + ----- Method: MCVersionSorter class>>new (in category 'instance creation') ----- - ----- Method: MCVersionSorter class>>new (in category 'as yet unclassified') ----- new ^ self basicNew initialize! Item was changed: + ----- Method: MCVersionSorter>>addAllAncestorsOf:to: (in category 'accessing') ----- - ----- Method: MCVersionSorter>>addAllAncestorsOf:to: (in category 'as yet unclassified') ----- addAllAncestorsOf: aVersionInfo to: aSet (aSet includes: aVersionInfo) ifTrue: [^ self]. aSet add: aVersionInfo. (self knownAncestorsOf: aVersionInfo) do: [:ea | self addAllAncestorsOf: ea to: aSet]! Item was changed: + ----- Method: MCVersionSorter>>addAllVersionInfos: (in category 'accessing') ----- - ----- Method: MCVersionSorter>>addAllVersionInfos: (in category 'as yet unclassified') ----- addAllVersionInfos: aCollection aCollection do: [:ea | self addVersionInfo: ea]! Item was changed: + ----- Method: MCVersionSorter>>addToCurrentLayer: (in category 'accessing') ----- - ----- Method: MCVersionSorter>>addToCurrentLayer: (in category 'as yet unclassified') ----- addToCurrentLayer: aVersionInfo | layer | layer := layers at: depthIndex. (layer includes: aVersionInfo) ifFalse: [depths at: aVersionInfo ifPresent: [:i | i < depthIndex ifTrue: [(layers at: i) remove: aVersionInfo] ifFalse: [^ false]]. layer add: aVersionInfo. depths at: aVersionInfo put: depthIndex. ^ true]. ^ false ! Item was changed: + ----- Method: MCVersionSorter>>addVersionInfo: (in category 'accessing') ----- - ----- Method: MCVersionSorter>>addVersionInfo: (in category 'as yet unclassified') ----- addVersionInfo: aVersionInfo roots add: aVersionInfo. self registerStepChildrenOf: aVersionInfo seen: Set new! Item was changed: + ----- Method: MCVersionSorter>>allAncestorsOf: (in category 'ancestry') ----- - ----- Method: MCVersionSorter>>allAncestorsOf: (in category 'as yet unclassified') ----- allAncestorsOf: aVersionInfo | all | all := Set new. self addAllAncestorsOf: aVersionInfo to: all. ^ all! Item was changed: + ----- Method: MCVersionSorter>>initialize (in category 'initialize-release') ----- - ----- Method: MCVersionSorter>>initialize (in category 'as yet unclassified') ----- initialize stepparents := Dictionary new. roots := OrderedCollection new.! Item was changed: + ----- Method: MCVersionSorter>>knownAncestorsOf: (in category 'ancestry') ----- - ----- Method: MCVersionSorter>>knownAncestorsOf: (in category 'as yet unclassified') ----- knownAncestorsOf: aVersionInfo ^ aVersionInfo ancestors, (self stepParentsOf: aVersionInfo) asArray! Item was changed: + ----- Method: MCVersionSorter>>layers (in category 'accessing') ----- - ----- Method: MCVersionSorter>>layers (in category 'as yet unclassified') ----- layers ^ layers! Item was changed: + ----- Method: MCVersionSorter>>popLayer (in category 'private') ----- - ----- Method: MCVersionSorter>>popLayer (in category 'as yet unclassified') ----- popLayer depthIndex := depthIndex - 1! Item was changed: + ----- Method: MCVersionSorter>>processVersionInfo: (in category 'private') ----- - ----- Method: MCVersionSorter>>processVersionInfo: (in category 'as yet unclassified') ----- processVersionInfo: aVersionInfo (self addToCurrentLayer: aVersionInfo) ifTrue: [self pushLayer. (self knownAncestorsOf: aVersionInfo) do: [:ea | self processVersionInfo: ea]. self popLayer] ! Item was changed: + ----- Method: MCVersionSorter>>pushLayer (in category 'private') ----- - ----- Method: MCVersionSorter>>pushLayer (in category 'as yet unclassified') ----- pushLayer depthIndex := depthIndex + 1. depthIndex > layers size ifTrue: [layers add: OrderedCollection new]. ! Item was changed: + ----- Method: MCVersionSorter>>registerStepChildrenOf:seen: (in category 'private') ----- - ----- Method: MCVersionSorter>>registerStepChildrenOf:seen: (in category 'as yet unclassified') ----- registerStepChildrenOf: aVersionInfo seen: aSet (aSet includes: aVersionInfo) ifTrue: [^ self]. aSet add: aVersionInfo. aVersionInfo stepChildren do: [:ea | (self stepParentsOf: ea) add: aVersionInfo]. aVersionInfo ancestors do: [:ea | self registerStepChildrenOf: ea seen: aSet].! Item was changed: + ----- Method: MCVersionSorter>>sortedVersionInfos (in category 'versions') ----- - ----- Method: MCVersionSorter>>sortedVersionInfos (in category 'as yet unclassified') ----- sortedVersionInfos layers := OrderedCollection with: OrderedCollection new. depthIndex := 1. depths := Dictionary new. roots do: [:ea | self processVersionInfo: ea]. ^ layers gather: [:ea | ea]! Item was changed: + ----- Method: MCVersionSorter>>stepParentsOf: (in category 'ancestry') ----- - ----- Method: MCVersionSorter>>stepParentsOf: (in category 'as yet unclassified') ----- stepParentsOf: aVersionInfo ^ (stepparents at: aVersionInfo ifAbsentPut: [Set new])! Item was changed: + ----- Method: MCWorkingAncestry>>addAncestor: (in category 'accessing') ----- - ----- Method: MCWorkingAncestry>>addAncestor: (in category 'as yet unclassified') ----- addAncestor: aNode ancestors := (self ancestors reject: [:each | aNode hasAncestor: each]) copyWith: aNode! Item was changed: + ----- Method: MCWorkingAncestry>>addStepChild: (in category 'accessing') ----- - ----- Method: MCWorkingAncestry>>addStepChild: (in category 'as yet unclassified') ----- addStepChild: aVersionInfo stepChildren := stepChildren copyWith: aVersionInfo! Item was changed: + ----- Method: MCWorkingAncestry>>infoWithName:message: (in category 'versions') ----- - ----- Method: MCWorkingAncestry>>infoWithName:message: (in category 'as yet unclassified') ----- infoWithName: nameString message: messageString ^ MCVersionInfo name: nameString id: UUID new message: messageString date: Date today time: Time now author: Utilities authorInitials ancestors: ancestors asArray stepChildren: self stepChildren asArray! Item was changed: + ----- Method: MCWorkingAncestry>>name (in category 'testing') ----- - ----- Method: MCWorkingAncestry>>name (in category 'as yet unclassified') ----- name ^ '<working copy>'! Item was changed: + ----- Method: MCWorkingAncestry>>reparent: (in category 'operations') ----- - ----- Method: MCWorkingAncestry>>reparent: (in category 'as yet unclassified') ----- reparent: aNode "Let aNode be the sole parent of this version" ancestors := { aNode } ! Item was changed: + ----- Method: MCWorkingAncestry>>summary (in category 'accessing') ----- - ----- Method: MCWorkingAncestry>>summary (in category 'as yet unclassified') ----- summary ^ 'Ancestors: ', self ancestorString! Item was changed: + ----- Method: MCWorkingCopy class>>adoptVersionInfoFrom: (in category 'operations') ----- - ----- Method: MCWorkingCopy class>>adoptVersionInfoFrom: (in category 'as yet unclassified') ----- adoptVersionInfoFrom: anInstaller |viCache| viCache := Dictionary new. anInstaller versionInfo keysAndValuesDo: [:packageName :info | (self forPackage: (MCPackage named: packageName)) versionInfo: (self infoFromDictionary: info cache: viCache)]. [anInstaller clearVersionInfo] on: Error do: ["backwards compat"].! Item was changed: + ----- Method: MCWorkingCopy class>>ancestorsFromArray:cache: (in category 'operations') ----- - ----- Method: MCWorkingCopy class>>ancestorsFromArray:cache: (in category 'as yet unclassified') ----- ancestorsFromArray: anArray cache: aDictionary ^ anArray ifNotNil: [anArray collect: [:dict | self infoFromDictionary: dict cache: aDictionary]]! Item was changed: + ----- Method: MCWorkingCopy class>>checkModified: (in category 'operations') ----- - ----- Method: MCWorkingCopy class>>checkModified: (in category 'as yet unclassified') ----- checkModified: thorough "Verify that all working copies with a modified flag are really modified, by comparing them to their stored snapshot. If the 'thorough' argument is true, check all packages, even unmodified ones." "MCWorkingCopy checkModified: true" | workingCopies | workingCopies := self allManagers. thorough ifFalse: [ workingCopies := workingCopies select: [:wc | wc modified]]. workingCopies do: [:wc | wc checkModified] displayingProgress: [:wc | 'Checking package {1} for changes ...' translated format: {wc packageName}]! Item was changed: + ----- Method: MCWorkingCopy class>>infoFromDictionary:cache: (in category 'operations') ----- - ----- Method: MCWorkingCopy class>>infoFromDictionary:cache: (in category 'as yet unclassified') ----- infoFromDictionary: aDictionary cache: cache | id | id := (aDictionary at: #id) asString. ^ cache at: id ifAbsentPut: [MCVersionInfo name: (aDictionary at: #name ifAbsent: ['']) id: (UUID fromString: id) message: (aDictionary at: #message ifAbsent: ['']) date: ([Date fromString: (aDictionary at: #date)] ifError: [nil]) time: ([Time fromString: (aDictionary at: #time)] ifError: [nil]) author: (aDictionary at: #author ifAbsent: ['']) ancestors: (self ancestorsFromArray: (aDictionary at: #ancestors ifAbsent: []) cache: cache) stepChildren: (self ancestorsFromArray: (aDictionary at: #stepChildren ifAbsent: []) cache: cache)]! Item was changed: + ----- Method: MCWorkingCopy class>>initialize (in category 'class initialization') ----- - ----- Method: MCWorkingCopy class>>initialize (in category 'as yet unclassified') ----- initialize Smalltalk at: #MczInstaller ifPresent: [:installer | self adoptVersionInfoFrom: installer]. self updateInstVars. "Temporary conversion code -- remove later" registry ifNotNil:[registry rehash]. "changed #=" self allInstancesDo:[:each| "moved notifications" Smalltalk at: #SystemChangeNotifier ifPresent:[:cls| cls uniqueInstance noMoreNotificationsFor: each. ]. ]. self registerForNotifications. Smalltalk addToStartUpList: self! Item was changed: + ----- Method: MCWorkingCopy class>>updateInstVars (in category 'system maintenance') ----- - ----- Method: MCWorkingCopy class>>updateInstVars (in category 'as yet unclassified') ----- updateInstVars self allInstances do: [:ea | ea updateInstVars]! Item was changed: + ----- Method: MCWorkingCopyBrowser class>>initialize (in category 'class initialization') ----- - ----- Method: MCWorkingCopyBrowser class>>initialize (in category 'as yet unclassified') ----- initialize (TheWorldMenu respondsTo: #registerOpenCommand:) ifTrue: [TheWorldMenu registerOpenCommand: {'Monticello Browser'. {self. #open}}]! Item was changed: + ----- Method: MCWorkingCopyBrowser class>>new (in category 'instance creation') ----- - ----- Method: MCWorkingCopyBrowser class>>new (in category 'as yet unclassified') ----- new ^ self basicNew initialize! Item was changed: + ----- Method: MCWorkingCopyBrowser class>>open (in category 'instance creation') ----- - ----- Method: MCWorkingCopyBrowser class>>open (in category 'as yet unclassified') ----- open self new show! Item was changed: + ----- Method: MCWorkingHistoryBrowser>>baseSnapshot (in category 'accessing') ----- - ----- Method: MCWorkingHistoryBrowser>>baseSnapshot (in category 'as yet unclassified') ----- baseSnapshot ^ package snapshot! Item was changed: + ----- Method: MCWriteOnlyRepository>>includesVersionNamed: (in category 'versions') ----- - ----- Method: MCWriteOnlyRepository>>includesVersionNamed: (in category 'as yet unclassified') ----- includesVersionNamed: aString ^ false! Item was changed: + ----- Method: MCWriteOnlyRepository>>morphicOpen: (in category 'user interface') ----- - ----- Method: MCWriteOnlyRepository>>morphicOpen: (in category 'as yet unclassified') ----- morphicOpen: aWorkingCopy self inform: 'This repository is write-only'! Item was changed: + ----- Method: MCWriteOnlyRepository>>versionNamesForPackageNamed: (in category 'versions') ----- - ----- Method: MCWriteOnlyRepository>>versionNamesForPackageNamed: (in category 'as yet unclassified') ----- versionNamesForPackageNamed: aString "Answer a collection of MCVersionNames whose Package is named aString." ^{}! Item was changed: + ----- Method: MCWriteOnlyRepository>>versionWithInfo:ifAbsent: (in category 'versions') ----- - ----- Method: MCWriteOnlyRepository>>versionWithInfo:ifAbsent: (in category 'as yet unclassified') ----- versionWithInfo: aVersionInfo ifAbsent: aBlock ^ aBlock value! Item was changed: + ----- Method: MethodAddition>>compile (in category 'compiling') ----- - ----- Method: MethodAddition>>compile (in category 'as yet unclassified') ----- compile "This method is the how compiling a method used to work. All these steps were done at once. This method should not normally be used, because the whole point of MethodAddition is to let you first create a compiled method and then install the method later." self createCompiledMethod. self installMethod. self notifyObservers. ^selector! Item was changed: + ----- Method: MethodAddition>>compile:classified:withStamp:notifying:logSource:inClass: (in category 'initialize-release') ----- - ----- Method: MethodAddition>>compile:classified:withStamp:notifying:logSource:inClass: (in category 'as yet unclassified') ----- compile: aString classified: aString1 withStamp: aString2 notifying: aRequestor logSource: aBoolean inClass: aClass text := aString. category := aString1. changeStamp := aString2. requestor := aRequestor. logSource := aBoolean. myClass := aClass! Item was changed: + ----- Method: MethodAddition>>createCompiledMethod (in category 'compiling') ----- - ----- Method: MethodAddition>>createCompiledMethod (in category 'as yet unclassified') ----- createCompiledMethod | notification | [methodAndNode := myClass compile: text asString environment: Environment current notifying: requestor trailer: (myClass defaultMethodTrailerIfLogSource: logSource) ifFail: [^nil]] on: SyntaxErrorNotification do: [:exc | notification := exc. exc pass]. notification ifNotNil: [notification newSource ifNotNil: [:newSource | text := newSource]]. selector := methodAndNode selector. compiledMethod := methodAndNode method. self writeSourceToLog. priorMethodOrNil := myClass compiledMethodAt: selector ifAbsent: [nil]. ! Item was changed: + ----- Method: MethodAddition>>installMethod (in category 'compiling') ----- - ----- Method: MethodAddition>>installMethod (in category 'as yet unclassified') ----- installMethod myClass addSelectorSilently: selector withMethod: compiledMethod. ! Item was changed: + ----- Method: MethodAddition>>notifyObservers (in category 'compiling') ----- - ----- Method: MethodAddition>>notifyObservers (in category 'as yet unclassified') ----- notifyObservers SystemChangeNotifier uniqueInstance doSilently: [myClass organization classify: selector under: category suppressIfDefault: false]. priorMethodOrNil isNil ifTrue: [SystemChangeNotifier uniqueInstance methodAdded: compiledMethod selector: selector inProtocol: category class: myClass requestor: requestor] ifFalse: [SystemChangeNotifier uniqueInstance methodChangedFrom: priorMethodOrNil to: compiledMethod selector: selector inClass: myClass requestor: requestor]. "The following code doesn't seem to do anything." myClass instanceSide noteCompilationOf: selector meta: myClass isClassSide. ! Item was changed: + ----- Method: MethodAddition>>writeSourceToLog (in category 'compiling') ----- - ----- Method: MethodAddition>>writeSourceToLog (in category 'as yet unclassified') ----- writeSourceToLog logSource ifTrue: [ myClass logMethodSource: text forMethodWithNode: methodAndNode inCategory: category withStamp: changeStamp notifying: requestor. ]. ! |
Free forum by Nabble | Edit this page |