[squeak-dev] The Inbox: Monticello-tfel.608.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Mar 31 16:19:39 UTC 2015
A new version of Monticello was added to project The Inbox:
http://source.squeak.org/inbox/Monticello-tfel.608.mcz
==================== Summary ====================
Name: Monticello-tfel.608
Author: tfel
Time: 31 March 2015, 6:19:34.129 pm
UUID: 62e1b3e7-bfeb-ca4d-97e6-118c603be2d8
Ancestors: Monticello-bf.607
add a menu item to browse patch against another version in the repository
=============== Diff against Monticello-bf.607 ===============
Item was changed:
----- Method: ChangeList>>changeTo: (in category '*monticello') -----
changeTo: changeSubset
| newList newChangeList |
newChangeList := OrderedCollection new.
newList := OrderedCollection new.
1 to: changeList size do:
[:i | (changeSubset includes: (changeList at: i)) ifTrue:
[newChangeList add: (changeList at: i).
newList add: (list at: i)]].
newChangeList size < changeList size
ifTrue:
[changeList := newChangeList.
list := newList.
listIndex := 0.
listSelections := Array new: list size withAll: false].
self changed: #list
!
Item was changed:
----- Method: CrLfFileStream>>lineEndingConvention: (in category '*monticello') -----
lineEndingConvention: aSymbol
lineEndConvention := aSymbol!
Item was changed:
----- Method: MCAddition>>intializeWithDefinition: (in category 'initializing') -----
intializeWithDefinition: aDefinition
definition := aDefinition!
Item was changed:
----- Method: MCAncestry>>commonAncestorWith: (in category 'ancestry') -----
commonAncestorWith: aNode
| commonAncestors |
commonAncestors := self commonAncestorsWith: aNode.
^ commonAncestors at: 1 ifAbsent: [nil]!
Item was changed:
----- Method: MCAncestry>>commonAncestorsWith: (in category 'ancestry') -----
commonAncestorsWith: aVersionInfo
| sharedAncestors mergedOrder sorter |
sorter := MCVersionSorter new
addVersionInfo: self;
addVersionInfo: aVersionInfo.
mergedOrder := sorter sortedVersionInfos.
sharedAncestors := (sorter allAncestorsOf: self) intersection: (sorter allAncestorsOf: aVersionInfo).
^ mergedOrder select: [:ea | sharedAncestors includes: ea]!
Item was changed:
----- Method: MCAncestry>>initialize (in category 'initialize-release') -----
initialize
ancestors := #().
stepChildren := #()!
Item was changed:
----- 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>>seenFileNames (in category 'as yet unclassified') -----
seenFileNames
^ seenFiles ifNil: [seenFiles := OrderedCollection new]!
Item was changed:
----- Method: MCChangeSelectionRequest>>label: (in category 'accessing') -----
label: aString
label := aString!
Item was changed:
----- Method: MCChangeSelectionRequest>>patch: (in category 'accessing') -----
patch: aPatch
patch := aPatch!
Item was changed:
----- Method: MCChangeSelector>>kept (in category 'as yet unclassified') -----
kept
^ kept ifNil: [kept := Set new]!
Item was changed:
----- 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>>selectNone (in category 'as yet unclassified') -----
selectNone
kept := Set new.
self changed: #list!
Item was changed:
----- Method: MCCodeTool>>browseVersions (in category 'menus') -----
browseVersions
"Create and schedule a message set browser on all versions of the
currently selected message selector."
| class selector compiledMethod |
class := self selectedClassOrMetaClass.
selector := self selectedMessageName.
compiledMethod := class compiledMethodAt: selector ifAbsent: [ ^self ].
VersionsBrowser
browseVersionsOf: compiledMethod
class: class theNonMetaClass
meta: class isMeta
category: self selectedMessageCategoryName
selector: selector!
Item was changed:
----- Method: MCCodeTool>>copySelector (in category 'menus') -----
copySelector
"Copy the selected selector to the clipboard"
| selector |
(selector := self selectedMessageName) ifNotNil:
[Clipboard clipboardText: selector asString]!
Item was changed:
----- Method: MCCodeTool>>findMethodInChangeSets (in category 'menus') -----
findMethodInChangeSets
"Find and open a changeSet containing the current method."
| aName |
(aName := self selectedMessageName) ifNotNil: [
ChangeSorter browseChangeSetsWithClass: self selectedClassOrMetaClass
selector: aName]!
Item was changed:
----- Method: MCConflict>>chooseLocal (in category 'as yet unclassified') -----
chooseLocal
chooseRemote := false!
Item was changed:
----- Method: MCConflict>>chooseRemote (in category 'as yet unclassified') -----
chooseRemote
chooseRemote := true!
Item was changed:
----- Method: MCConflict>>clearChoice (in category 'as yet unclassified') -----
clearChoice
chooseRemote := nil!
Item was changed:
----- Method: MCConflict>>operation: (in category 'as yet unclassified') -----
operation: anOperation
operation := anOperation!
Item was changed:
----- 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: MCDefinitionIndex>>definitionLike:ifPresent:ifAbsent: (in category 'as yet unclassified') -----
definitionLike: aDefinition ifPresent: foundBlock ifAbsent: errorBlock
| definition |
definition := definitions at: aDefinition description ifAbsent: [].
^ definition
ifNil: errorBlock
ifNotNil: [foundBlock value: definition]!
Item was changed:
----- Method: MCDefinitionIndex>>initialize (in category 'as yet unclassified') -----
initialize
definitions := Dictionary new!
Item was changed:
----- 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: MCDependencySorter>>addProvision: (in category 'private') -----
addProvision: anObject
| newlySatisfied |
provided add: anObject.
newlySatisfied := required removeKey: anObject ifAbsent: [#()].
self addAll: newlySatisfied.!
Item was changed:
----- Method: MCDependencySorter>>initialize (in category 'initialize-release') -----
initialize
provided := Set new.
required := Dictionary new.
orderedItems := OrderedCollection new.!
Item was changed:
----- Method: MCDependencySorter>>itemsWithMissingRequirements (in category 'accessing') -----
itemsWithMissingRequirements
| items |
items := Set new.
required do: [:ea | items addAll: ea].
^ items
!
Item was changed:
----- Method: MCDictionaryRepository>>description: (in category 'as yet unclassified') -----
description: aString
description := aString !
Item was changed:
----- Method: MCDictionaryRepository>>dictionary: (in category 'as yet unclassified') -----
dictionary: aDictionary
dict := aDictionary!
Item was changed:
----- Method: MCDictionaryRepository>>initialize (in category 'as yet unclassified') -----
initialize
dict := Dictionary new.
!
Item was changed:
----- 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: 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>>snapshot (in category 'as yet unclassified') -----
snapshot
^ snapshot ifNil: [snapshot := MCPatcher apply: patch to: self baseSnapshot]!
Item was changed:
----- Method: MCDirectoryRepository>>directory: (in category 'accessing') -----
directory: aDirectory
directory := aDirectory!
Item was changed:
----- Method: MCDirectoryRepository>>initialize (in category 'accessing') -----
initialize
directory := FileDirectory default!
Item was changed:
----- 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 '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>>source: (in category 'as yet unclassified') -----
source: aString
source := aString!
Item was changed:
----- Method: MCFileBasedRepository>>canReadFileNamed: (in category 'private-files') -----
canReadFileNamed: aString
| reader |
reader := MCVersionReader readerClassForFileNamed: aString.
^ reader notNil!
Item was changed:
----- Method: MCFilteredVersionSorter>>target: (in category 'as yet unclassified') -----
target: aVersionInfo
target := aVersionInfo!
Item was changed:
----- 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 'as yet unclassified') -----
directory: dirPath
directory := dirPath!
Item was changed:
----- Method: MCFtpRepository>>host: (in category 'as yet unclassified') -----
host: hostname
host := hostname!
Item was changed:
----- Method: MCFtpRepository>>password: (in category 'as yet unclassified') -----
password: passwordString
password := passwordString!
Item was changed:
----- Method: MCFtpRepository>>user: (in category 'as yet unclassified') -----
user: userString
user := userString!
Item was changed:
----- Method: MCFtpRepository>>writeStreamForFileNamed:replace:do: (in category 'required') -----
writeStreamForFileNamed: aString replace: ignoreBoolean do: aBlock
| stream |
stream := RWBinaryOrTextStream on: String new.
aBlock value: stream.
self clientDo:
[:client |
client binary.
client putFileStreamContents: stream reset as: aString]!
Item was changed:
----- Method: MCGOODSRepository>>host: (in category 'as yet unclassified') -----
host: aString
hostname := aString!
Item was changed:
----- Method: MCGOODSRepository>>port: (in category 'as yet unclassified') -----
port: aNumber
port := aNumber!
Item was changed:
----- Method: MCHttpRepository>>location: (in category 'accessing') -----
location: aUrlString
location := aUrlString!
Item was changed:
----- Method: MCHttpRepository>>password: (in category 'accessing') -----
password: passwordString
password := passwordString!
Item was changed:
----- Method: MCHttpRepository>>user: (in category 'accessing') -----
user: userString
user := userString!
Item was changed:
----- Method: MCMcdReader>>loadBaseInfo (in category 'as yet unclassified') -----
loadBaseInfo
^ baseInfo := self extractInfoFrom: (self parseMember: 'base')!
Item was changed:
----- Method: MCMczReader>>infoCache (in category 'as yet unclassified') -----
infoCache
^ infoCache ifNil: [infoCache := Dictionary new]!
Item was changed:
----- Method: MCMczReader>>loadDependencies (in category 'loading') -----
loadDependencies
dependencies := (self zip membersMatching: 'dependencies/*') collect: [:m | self extractDependencyFrom: m].
dependencies := dependencies asArray.
!
Item was changed:
----- Method: MCMczReader>>loadPackage (in category 'loading') -----
loadPackage
| dict |
dict := self parseMember: 'package'.
package := MCPackage named: (dict at: #name)!
Item was changed:
----- Method: MCMczReader>>loadVersionInfo (in category 'loading') -----
loadVersionInfo
info := self extractInfoFrom: (self parseMember: 'version')!
Item was changed:
----- 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 'as yet unclassified') -----
fileOut: aVersion on: aStream
| inst |
inst := self on: aStream.
inst writeVersion: aVersion.
inst flush.
!
Item was changed:
----- Method: MCMczWriter>>addString:at: (in category 'writing') -----
addString: string at: path
| member |
member := zip addString: string as: path.
member desiredCompressionMethod: ZipArchive compressionDeflated
!
Item was changed:
----- Method: MCMczWriter>>initialize (in category 'initializing') -----
initialize
zip := ZipArchive new.
!
Item was changed:
----- Method: MCMczWriter>>serializeInBinary: (in category 'serializing') -----
serializeInBinary: aSnapshot
| writer s |
s := RWBinaryOrTextStream on: String new.
writer := DataStream on: s.
writer nextPut: aSnapshot.
^ s contents!
Item was changed:
----- Method: MCMczWriter>>serializeVersionInfo: (in category 'serializing') -----
serializeVersionInfo: aVersionInfo
infoWriter ifNil: [infoWriter := MCVersionInfoWriter new].
^ String streamContents:
[:s |
infoWriter stream: s.
infoWriter writeVersionInfo: aVersionInfo]!
Item was changed:
----- 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: 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 'as yet unclassified') -----
ancestorSnapshot
^ ancestorSnapshot ifNil: [ancestorSnapshot := version workingCopy findSnapshotWithVersionInfo: self ancestorInfo]!
Item was changed:
----- 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 'as yet unclassified') -----
initializeWithVersion: aVersion
version := aVersion!
Item was changed:
----- 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 'as yet unclassified') -----
packageSnapshot
^ packageSnapshot ifNil: [packageSnapshot := version package snapshot]!
Item was changed:
----- Method: MCMergeResolutionRequest>>merger: (in category 'accessing') -----
merger: aMerger
merger := aMerger!
Item was changed:
----- Method: MCMerger>>conflicts (in category 'as yet unclassified') -----
conflicts
^ conflicts ifNil: [conflicts := OrderedCollection new]!
Item was changed:
----- 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: MCModification>>initializeWithBase:target: (in category 'initializing') -----
initializeWithBase: base target: target
obsoletion := base.
modification := target.!
Item was changed:
----- Method: MCOrganizationDefinition>>categories: (in category 'accessing') -----
categories: anArray
categories := anArray!
Item was changed:
----- Method: MCOrganizationDefinition>>commonPrefix (in category 'accessing') -----
commonPrefix
| stream |
categories isEmpty ifTrue: [^ ''].
stream := String new writeStream.
categories first withIndexDo:
[:c :i|
categories do:
[:ea |
(ea at: i ifAbsent: []) = c ifFalse: [^ stream contents]].
stream nextPut: c].
^ stream contents!
Item was changed:
----- Method: MCPackage>>name: (in category 'accessing') -----
name: aString
name := aString!
Item was changed:
----- Method: MCPackageCache>>initialize (in category 'as yet unclassified') -----
initialize
sorter := MCVersionSorter new.
fileNames := Dictionary new.!
Item was changed:
----- Method: MCPackageLoader>>analyze (in category 'private') -----
analyze
| sorter |
sorter := self sorterForItems: additions.
additions := sorter orderedItems.
requirements := sorter externalRequirements.
unloadableDefinitions := sorter itemsWithMissingRequirements asSortedCollection.
sorter := self sorterForItems: removals.
removals := sorter orderedItems reversed.!
Item was changed:
----- Method: MCPackageLoader>>installSnapshot: (in category 'public') -----
installSnapshot: aSnapshot
| patch |
patch := aSnapshot patchRelativeToBase: MCSnapshot empty.
patch applyTo: self.
!
Item was changed:
----- Method: MCPackageLoader>>sorterForItems: (in category 'private') -----
sorterForItems: aCollection
| sorter |
sorter := MCDependencySorter items: aCollection.
sorter addExternalProvisions: self provisions.
^ sorter!
Item was changed:
----- Method: MCPackageLoader>>updatePackage:withSnapshot: (in category 'public') -----
updatePackage: aPackage withSnapshot: aSnapshot
| patch packageSnap |
packageSnap := aPackage snapshot.
patch := aSnapshot patchRelativeToBase: packageSnap.
patch applyTo: self.
packageSnap definitions do: [:ea | self provisions addAll: ea provisions]
!
Item was changed:
----- 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>>registry (in category 'as yet unclassified') -----
registry
^ registry ifNil: [registry := Dictionary new]!
Item was changed:
----- Method: MCPackageManager>>initialize (in category 'initialize-release') -----
initialize
modified := false.
self registerForNotifications.!
Item was changed:
----- Method: MCPackageManager>>initializeWithPackage: (in category 'initialize-release') -----
initializeWithPackage: aPackage
package := aPackage.
self initialize.!
Item was changed:
----- Method: MCPatch>>initializeWithBase:target: (in category 'initialize-release') -----
initializeWithBase: baseSnapshot target: targetSnapshot
| base target |
operations := OrderedCollection new.
base := MCDefinitionIndex definitions: baseSnapshot definitions.
target := MCDefinitionIndex definitions: targetSnapshot definitions.
target definitions do:
[:t |
base
definitionLike: t
ifPresent: [:b | (b isSameRevisionAs: t) ifFalse: [operations add: (MCModification of: b to: t)]]
ifAbsent: [operations add: (MCAddition of: t)]]
displayingProgress: 'Diffing...'.
base definitions do:
[:b |
target
definitionLike: b
ifPresent: [:t]
ifAbsent: [operations add: (MCRemoval of: b)]] !
Item was changed:
----- Method: MCPatchBrowser>>patch: (in category 'initialize-release') -----
patch: aPatch
items := aPatch operations asSortedCollection!
Item was changed:
----- 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>>initializeWithSnapshot: (in category 'as yet unclassified') -----
initializeWithSnapshot: aSnapshot
definitions := MCDefinitionIndex definitions: aSnapshot definitions!
Item was changed:
----- Method: MCReader class>>on:name: (in category 'instance creation') -----
on: aStream name: aFileName
| class |
class := self readerClassForFileNamed: aFileName.
^ class
ifNil: [self error: 'Unsupported format: ', aFileName]
ifNotNil: [class on: aStream]!
Item was changed:
----- Method: MCReader>>stream: (in category 'accessing') -----
stream: aStream
stream := aStream!
Item was changed:
----- Method: MCRemoval>>intializeWithDefinition: (in category 'initializing') -----
intializeWithDefinition: aDefinition
definition := aDefinition!
Item was changed:
----- Method: MCRepository>>doAlwaysStoreDiffs (in category 'accessing') -----
doAlwaysStoreDiffs
storeDiffs := true!
Item was changed:
----- Method: MCRepository>>doNotAlwaysStoreDiffs (in category 'accessing') -----
doNotAlwaysStoreDiffs
storeDiffs := false!
Item was changed:
----- 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: MCRepositoryGroup class>>default (in category 'accessing') -----
default
^ default ifNil: [default := self new]!
Item was changed:
----- Method: MCRepositoryInspector class>>repository:workingCopy: (in category 'instance creation') -----
repository: aFileBasedRepository workingCopy: aWorkingCopy
^self new
setRepository: aFileBasedRepository workingCopy: aWorkingCopy;
yourself!
Item was changed:
----- Method: MCRepositoryInspector>>defaultExtent (in category 'morphic ui') -----
defaultExtent
^450 at 300!
Item was changed:
----- Method: MCRepositoryInspector>>defaultLabel (in category 'morphic ui') -----
defaultLabel
^'Repository: ' , repository description!
Item was changed:
----- Method: MCRepositoryInspector>>hasVersion (in category 'morphic ui') -----
hasVersion
^ selectedVersion notNil!
Item was changed:
----- Method: MCRepositoryInspector>>packageListMenu: (in category 'morphic ui') -----
packageListMenu: aMenu
^aMenu!
Item was changed:
----- Method: MCRepositoryInspector>>versionListMenu: (in category 'morphic ui') -----
versionListMenu: aMenu
1 to: self orderSpecs size do: [ :index |
aMenu addUpdating: #orderString: target: self selector: #order: argumentList: { index } ].
+ aMenu addLine.
+ aMenu add: 'Changes against ...' action: [| ri |
+ ri := aMenu defaultTarget.
+ (UIManager default
+ chooseFrom: ri allVersionNames
+ values: ri allVersionNames
+ title: 'Select version to show patch against ...') ifNotNilDo: [:name |
+ | versionName target base |
+ versionName := MCVersionName on: name.
+ target := ri repository versionNamed: ri versionInfo name.
+ base := aMenu defaultTarget repository versionNamed: versionName.
+ (MCPatchBrowser
+ forPatch: (target snapshot patchRelativeToBase: base snapshot))
+ showLabelled: 'Changes from ', versionName, ' to ', ri versionInfo name]].
^aMenu!
Item was changed:
----- Method: MCRepositoryInspector>>widgetSpecs (in category 'morphic ui') -----
widgetSpecs
^#( ((buttonRow) (0 0 1 0) (0 0 0 30))
((listMorph: package) (0 0 0.5 0.6) (0 30 0 0))
((listMorph: version) (0.5 0 1 0.6) (0 30 0 0))
((textMorph: summary) (0 0.6 1 1) (0 0 0 0)) )!
Item was changed:
----- Method: MCSMCacheRepository>>allFullFileNames (in category 'accessing') -----
allFullFileNames
| cachedPackages |
cachedPackages := smCache map installedPackages select: [ :ea | ea isCached ].
^Array streamContents: [ :s |
cachedPackages do: [ :ea | | d |
d := ea cacheDirectory.
(d fileNamesMatching: '*.mcz') do: [ :fn | s nextPut: (d fullNameFor: fn) ]]]!
Item was changed:
----- Method: MCSMCacheRepository>>readStreamForFileNamed:do: (in category 'file streaming') -----
readStreamForFileNamed: aString do: aBlock
| file fileName |
fileName := self fullNameFor: aString.
fileName ifNil: [
"assume that this will come from the cache."
^MCCacheRepository default readStreamForFileNamed: aString do: aBlock ].
file := FileStream readOnlyFileNamed: fileName.
^[ aBlock value: file ] ensure: [ file close ].
!
Item was changed:
----- 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>>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>>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 '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: MCSaveVersionDialog>>logMessage: (in category 'accessing') -----
logMessage: aString
message := aString.
self changed: #logMessage!
Item was changed:
----- Method: MCSaveVersionDialog>>versionName: (in category 'accessing') -----
versionName: aString
name := aString.
self changed: #versionName!
Item was changed:
----- Method: MCScanner>>next (in category 'as yet unclassified') -----
next
| c |
stream skipSeparators.
c := stream peek.
c = $# 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>>stream: (in category 'as yet unclassified') -----
stream: aStream
stream := aStream!
Item was changed:
----- Method: MCSmtpRepository>>emailAddress: (in category 'as yet unclassified') -----
emailAddress: aString
email := aString !
Item was changed:
----- Method: MCSnapshot>>initializeWithDefinitions: (in category 'initializing') -----
initializeWithDefinitions: aCollection
definitions := aCollection.!
Item was changed:
----- Method: MCSnapshotBrowser>>categorySelection: (in category 'selecting') -----
categorySelection: aNumber
categorySelection := aNumber = 0 ifFalse: [self visibleCategories at: aNumber].
self classSelection: 0.
self changed: #categorySelection;
changed: #annotations;
changed: #classList.
!
Item was changed:
----- Method: MCSnapshotBrowser>>classDefinitionString (in category 'text') -----
classDefinitionString
| defs |
defs := items select: [:ea | (ea isClassDefinition or: [ea isClassDefinitionExtension])
and: [ea className = classSelection]].
defs isEmpty ifTrue: [^ 'This class is defined elsewhere.'].
^ String streamContents: [:stream |
defs asArray sort
do: [:ea | ea printDefinitionOn: stream]
separatedBy: [stream nextPut: $.; cr]
].!
Item was changed:
----- Method: MCSnapshotBrowser>>methodSelection: (in category 'selecting') -----
methodSelection: aNumber
methodSelection := aNumber = 0 ifFalse: [self visibleMethods at: aNumber].
self changed: #methodSelection; changed: #text; changed: #annotations!
Item was changed:
----- Method: MCSnapshotBrowser>>methodsForSelectedProtocol (in category 'accessing') -----
methodsForSelectedProtocol
| methods |
protocolSelection ifNil: [^ Array new].
methods := self methodsForSelectedClass asOrderedCollection.
(protocolSelection = '-- all --')
ifFalse: [methods removeAllSuchThat: [:ea | ea category ~= protocolSelection]].
^ methods
!
Item was changed:
----- Method: MCSnapshotBrowser>>protocolSelection: (in category 'selecting') -----
protocolSelection: anInteger
protocolSelection := (anInteger = 0 ifFalse: [self visibleProtocols at: anInteger]).
self methodSelection: 0.
self changed: #protocolSelection;
changed: #methodList;
changed: #annotations!
Item was changed:
----- Method: MCSnapshotBrowser>>selectedClassOrMetaClass (in category 'accessing') -----
selectedClassOrMetaClass
| class |
classSelection ifNil: [ ^nil ].
class := Smalltalk at: classSelection ifAbsent: [ ^nil ].
^self switchIsClass ifTrue: [ class class ]
ifFalse: [ class ].!
Item was changed:
----- Method: MCSnapshotBrowser>>snapshot: (in category 'accessing') -----
snapshot: aSnapshot
items := aSnapshot definitions asSortedCollection.
self categorySelection: 0.!
Item was changed:
----- Method: MCSnapshotBrowser>>switchBeClass (in category 'switch') -----
switchBeClass
switch := #class.
self signalSwitchChanged.!
Item was changed:
----- Method: MCSnapshotBrowser>>switchBeComment (in category 'switch') -----
switchBeComment
switch := #comment.
self signalSwitchChanged.!
Item was changed:
----- Method: MCSnapshotBrowser>>switchBeInstance (in category 'switch') -----
switchBeInstance
switch := #instance.
self signalSwitchChanged.!
Item was changed:
----- Method: MCSnapshotBrowser>>switchIsInstance (in category 'switch') -----
switchIsInstance
switch ifNil: [switch := #instance].
^ switch = #instance.!
Item was changed:
----- Method: MCSnapshotBrowser>>visibleProtocols (in category 'listing') -----
visibleProtocols
| methods protocols |
self switchIsComment ifTrue: [^ Array new].
methods := self methodsForSelectedClass.
protocols := (methods collect: [:ea | ea category]) asSet asSortedCollection.
(protocols size > 1) ifTrue: [protocols add: '-- all --'].
^ protocols !
Item was changed:
----- 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>>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 'as yet unclassified') -----
commentStampFor: aPseudoClass
| comment |
comment := aPseudoClass organization classComment.
^ [comment stamp] on: MessageNotUnderstood do: [nil]!
Item was changed:
----- Method: MCStReader>>loadDefinitions (in category 'evaluating') -----
loadDefinitions
| filePackage |
filePackage :=
FilePackage new
fullName: 'ReadStream';
fileInFrom: self readStream.
definitions := OrderedCollection new.
filePackage classes do:
[:pseudoClass |
pseudoClass hasDefinition
ifTrue: [definitions add:
(self classDefinitionFrom: pseudoClass)].
definitions addAll: (self methodDefinitionsFor: pseudoClass).
definitions addAll: (self methodDefinitionsFor: pseudoClass metaClass)].
filePackage doIts do:
[:ea |
self addDefinitionsFromDoit: ea string].
!
Item was changed:
----- 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: MCSubDirectoryRepository>>findFullNameForReading: (in category 'as yet unclassified') -----
findFullNameForReading: aBaseName
"Answer the latest version of aBaseName"
| possible |
possible := SortedCollection sortBlock: [ :a :b | b first modificationTime < a first modificationTime ].
self allDirectories
do: [:dir | dir entries
do: [:ent | ent isDirectory
ifFalse: [
(ent name = aBaseName) ifTrue: [ possible add: {ent. dir fullNameFor: ent name}]]]].
^(possible at: 1 ifAbsent: [ ^nil ]) second
!
Item was changed:
----- 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: 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 '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>>initialize (in category 'as yet unclassified') -----
initialize
index := MCDefinitionIndex new.
provisions := Set new!
Item was changed:
----- Method: MCThreeWayMerger>>operations (in category 'as yet unclassified') -----
operations
^ operations ifNil: [operations := OrderedCollection new]!
Item was changed:
----- Method: MCTool>>label: (in category 'morphic ui') -----
label: aString
label := aString!
Item was changed:
----- Method: MCTool>>window (in category 'morphic ui') -----
window
^ morph ifNil: [morph := self buildWindow]!
Item was changed:
----- Method: MCVariableDefinition>>name: (in category 'accessing') -----
name: aString
name := aString!
Item was changed:
----- Method: MCVersion>>allDependenciesDo:ifUnresolved: (in category 'enumerating') -----
allDependenciesDo: aBlock ifUnresolved: failBlock
| dict |
dict := Dictionary new.
self allDependenciesNotIn: dict do: aBlock ifUnresolved: failBlock!
Item was changed:
----- Method: MCVersion>>setPackage:info:snapshot:dependencies: (in category 'initialize-release') -----
setPackage: aPackage info: aVersionInfo snapshot: aSnapshot dependencies: aCollection
package := aPackage.
info := aVersionInfo.
snapshot := aSnapshot.
dependencies := aCollection!
Item was changed:
----- Method: MCVersion>>withAllDependenciesDo:ifUnresolved: (in category 'enumerating') -----
withAllDependenciesDo: aBlock ifUnresolved: failBlock
| dict |
dict := Dictionary new.
self allDependenciesNotIn: dict do: aBlock ifUnresolved: failBlock.
aBlock value: self!
Item was changed:
----- Method: MCVersionDependency>>initializeWithPackage:info: (in category 'initialize-release') -----
initializeWithPackage: aPackage info: aVersionInfo
package := aPackage.
versionInfo := aVersionInfo!
Item was changed:
----- Method: MCVersionHistoryBrowser>>ancestry: (in category 'accessing') -----
ancestry: anAncestry
ancestry := anAncestry!
Item was changed:
----- Method: MCVersionHistoryBrowser>>index: (in category 'accessing') -----
index: anObject
"Set the value of index"
index := anObject!
Item was changed:
----- Method: MCVersionHistoryBrowser>>package: (in category 'accessing') -----
package: aMCPackage
package := aMCPackage!
Item was changed:
----- Method: MCVersionHistoryBrowser>>selection: (in category 'accessing') -----
selection: aNumber
index := aNumber.
self changed: #selection; changed: #summary!
Item was changed:
----- Method: MCVersionHistoryBrowser>>summary (in category 'accessing') -----
summary
| selInfo |
selInfo := self selectedInfo.
^ selInfo
ifNil: ['']
ifNotNil: [selInfo summary]!
Item was changed:
----- Method: MCVersionInfoWriter>>written (in category 'as yet unclassified') -----
written
^ written ifNil: [written := Set new]!
Item was changed:
----- Method: MCVersionInspector>>version: (in category 'accessing') -----
version: aVersion
version := aVersion!
Item was changed:
----- Method: MCVersionLoader>>checkForModifications (in category 'checking') -----
checkForModifications
| modifications |
modifications := versions select: [:ea | ea package workingCopy modified].
modifications isEmpty ifFalse: [self warnAboutLosingChangesTo: modifications].!
Item was changed:
----- Method: MCVersionLoader>>initialize (in category 'initialize-release') -----
initialize
versions := OrderedCollection new!
Item was changed:
----- Method: MCVersionMerger>>initialize (in category 'as yet unclassified') -----
initialize
records := OrderedCollection new.
merger := MCThreeWayMerger new.!
Item was changed:
----- Method: MCVersionNameAndMessageRequest>>suggestedName: (in category 'accessing') -----
suggestedName: aString
suggestion := aString!
Item was changed:
----- 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 asSortedCollection]!
Item was changed:
----- 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 'as yet unclassified') -----
notify: aString
| message |
message := self messageTo: aString.
SMTPClient
deliverMailFrom: message from
to: (Array with: message to)
text: message text
usingServer: MailSender smtpServer!
Item was changed:
----- 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>>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 'as yet unclassified') -----
initialize
stepparents := Dictionary new.
roots := OrderedCollection new.!
Item was changed:
----- Method: MCVersionSorter>>popLayer (in category 'as yet unclassified') -----
popLayer
depthIndex := depthIndex - 1!
Item was changed:
----- 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>>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: MCWorkingAncestry>>addStepChild: (in category 'as yet unclassified') -----
addStepChild: aVersionInfo
stepChildren := stepChildren copyWith: aVersionInfo!
Item was changed:
----- Method: MCWorkingCopy>>changesRelativeToRepository: (in category 'operations') -----
changesRelativeToRepository: aRepository
| ancestorVersion ancestorSnapshot |
ancestorVersion := aRepository closestAncestorVersionFor: ancestry ifNone: [].
ancestorSnapshot := ancestorVersion ifNil: [MCSnapshot empty] ifNotNil: [ancestorVersion snapshot].
^ package snapshot patchRelativeToBase: ancestorSnapshot!
Item was changed:
----- Method: MCWorkingCopy>>clearRequiredPackages (in category 'accessing') -----
clearRequiredPackages
requiredPackages := nil!
Item was changed:
----- Method: MCWorkingCopy>>initialize (in category 'private') -----
initialize
super initialize.
ancestry := MCWorkingAncestry new!
Item was changed:
----- Method: MCWorkingCopy>>loaded: (in category 'operations') -----
loaded: aVersion
ancestry := MCWorkingAncestry new addAncestor: aVersion info.
requiredPackages := OrderedCollection withAll: (aVersion dependencies collect: [:ea | ea package]).
self modified: false.
self changed!
Item was changed:
----- Method: MCWorkingCopy>>repositoryGroup (in category 'repositories') -----
repositoryGroup
^ repositoryGroup ifNil: [repositoryGroup := MCRepositoryGroup new]!
Item was changed:
----- Method: MCWorkingCopy>>repositoryGroup: (in category 'repositories') -----
repositoryGroup: aRepositoryGroup
repositoryGroup := aRepositoryGroup!
Item was changed:
----- Method: MCWorkingCopy>>requiredPackages (in category 'accessing') -----
requiredPackages
^ requiredPackages ifNil: [requiredPackages := OrderedCollection new]!
Item was changed:
----- Method: MCWorkingCopy>>uniqueVersionName (in category 'private') -----
uniqueVersionName
|versionName|
counter := nil.
[versionName := self nextVersionName.
self repositoryGroup includesVersionNamed: versionName] whileTrue.
^ versionName!
Item was changed:
----- Method: MCWorkingCopy>>updateInstVars (in category 'migration') -----
updateInstVars
ancestry ifNil:
[ancestry := MCWorkingAncestry new.
versionInfo ifNotNil:
[versionInfo ancestors do: [:ea | ancestry addAncestor: ea].
versionInfo := nil]]!
Item was changed:
----- Method: MCWorkingCopy>>versionInfo: (in category 'accessing') -----
versionInfo: aVersionInfo
ancestry := MCWorkingAncestry new addAncestor: aVersionInfo!
Item was changed:
----- Method: MCWorkingCopyBrowser>>defaults (in category 'morphic ui') -----
defaults
^ defaults ifNil: [defaults := Dictionary new]!
Item was changed:
----- Method: MCWorkingCopyBrowser>>repository (in category 'actions') -----
repository
workingCopy ifNotNil: [repository := self defaults at: workingCopy ifAbsent: []].
^ repository!
Item was changed:
----- Method: MCWorkingCopyBrowser>>repository: (in category 'actions') -----
repository: aRepository
repository := aRepository.
workingCopy ifNotNil: [self defaults at: workingCopy put: aRepository]!
Item was changed:
----- Method: MCWorkingCopyBrowser>>viewChanges (in category 'actions') -----
viewChanges
| patch |
self canSave ifTrue:
[patch := workingCopy changesRelativeToRepository: self repository.
patch isNil ifTrue: [^ self].
patch isEmpty
ifTrue: [ workingCopy modified: false.
self inform: 'No changes' ]
ifFalse:
[ workingCopy modified: true.
(MCPatchBrowser forPatch: patch)
label: 'Patch Browser: ', workingCopy description;
show]]!
Item was changed:
----- Method: MCWriter>>stream: (in category 'accessing') -----
stream: aStream
stream := aStream!
Item was changed:
----- Method: TimeStamp class>>fromMethodTimeStamp: (in category '*monticello-instance creation') -----
fromMethodTimeStamp: aString
| stream |
stream := ReadStream on: aString.
stream skipSeparators.
stream skipTo: Character space.
^self readFrom: stream.!
Item was changed:
----- Method: TimeStamp class>>fromString: (in category '*monticello-instance creation') -----
fromString: aString
"Answer a new instance for the value given by aString.
TimeStamp fromString: '1-10-2000 11:55:00 am'.
"
^self readFrom: (ReadStream on: aString).!
Item was changed:
----- Method: TimeStamp class>>readFrom: (in category '*monticello-instance creation') -----
readFrom: stream
| date time |
stream skipSeparators.
date := Date readFrom: stream.
stream skipSeparators.
time := Time readFrom: stream.
^self
date: date
time: time!
More information about the Squeak-dev
mailing list
|