Well, I think the proper change may be to make all implementors of #versionNamesForPackageNamed: consistently returning the same thing.
It looks like I originally made this method answer an Array since 2011 but, only when I recently added it to MCRepositoryGroup, made THAT ONE answer a Set. I failed to look at the others but instead "just thought about it". If the same version was in more than one repository we don't really need it multiple times.
So what is the correct behavior? Perhaps answering a Set is the correct behavior afterall and the others should be changed too?
On Mon, Apr 29, 2013 at 6:13 AM, commits@source.squeak.org wrote:
Frank Shearar uploaded a new version of Installer-Core to project The Trunk: http://source.squeak.org/trunk/Installer-Core-fbs.366.mcz
==================== Summary ====================
Name: Installer-Core-fbs.366 Author: fbs Time: 29 April 2013, 12:13:46.368 pm UUID: a93fa0fc-2a93-405a-86df-7aa334ee214b Ancestors: Installer-Core-fbs.365
versionNames is a Set nowadays, but we want to sort it. Hence, convert to an Array.
=============== Diff against Installer-Core-fbs.365 ===============
Item was changed: ----- Method: InstallerMonticello>>mcThing (in category 'monticello') ----- mcThing | loader | loader := self classMCVersionLoader new.
"several attempts to read files - repository readableFileNames sometimes fails" self packages do: [:pkg | | versionNames fileToLoad version | versionNames := mc versionNamesForPackageNamed: (pkg asMCVersionName versionNumber = 0 ifTrue: [ "Just a package name specified, use it whole." pkg ] ifFalse: [pkg asMCVersionName packageName]).
versionNames asArray sort: self mcSortFileBlock.
versionNames sort: self mcSortFileBlock. fileToLoad := versionNames detect: (self mcDetectFileBlock: pkg) ifNone: [ nil ]. fileToLoad ifNotNil: [version := mc versionNamed: fileToLoad. (version isKindOf: MCConfiguration) ifTrue: [^ version] ifFalse: [self normalizedRepositories do: [:repo | MCRepositoryGroup default addRepository: repo]. self normalizedRepositories do: [:repo | version workingCopy repositoryGroup addRepository: repo]. loader addVersion: version]. self logCR: ' found ' , version fileName , '...']]. ^ loader!
On 29 April 2013 15:08, Chris Muller asqueaker@gmail.com wrote:
Well, I think the proper change may be to make all implementors of #versionNamesForPackageNamed: consistently returning the same thing.
It looks like I originally made this method answer an Array since 2011 but, only when I recently added it to MCRepositoryGroup, made THAT ONE answer a Set. I failed to look at the others but instead "just thought about it". If the same version was in more than one repository we don't really need it multiple times.
So what is the correct behavior? Perhaps answering a Set is the correct behavior afterall and the others should be changed too?
I see no problem with it being a Set. It's querying across multiple repositories, and duplicate names are rather likely.
frank
On Mon, Apr 29, 2013 at 6:13 AM, commits@source.squeak.org wrote:
Frank Shearar uploaded a new version of Installer-Core to project The Trunk: http://source.squeak.org/trunk/Installer-Core-fbs.366.mcz
==================== Summary ====================
Name: Installer-Core-fbs.366 Author: fbs Time: 29 April 2013, 12:13:46.368 pm UUID: a93fa0fc-2a93-405a-86df-7aa334ee214b Ancestors: Installer-Core-fbs.365
versionNames is a Set nowadays, but we want to sort it. Hence, convert to an Array.
=============== Diff against Installer-Core-fbs.365 ===============
Item was changed: ----- Method: InstallerMonticello>>mcThing (in category 'monticello') ----- mcThing | loader | loader := self classMCVersionLoader new.
"several attempts to read files - repository readableFileNames sometimes fails" self packages do: [:pkg | | versionNames fileToLoad version | versionNames := mc versionNamesForPackageNamed: (pkg asMCVersionName versionNumber = 0 ifTrue: [ "Just a package name specified, use it whole." pkg ] ifFalse: [pkg asMCVersionName packageName]).
versionNames asArray sort: self mcSortFileBlock.
versionNames sort: self mcSortFileBlock. fileToLoad := versionNames detect: (self mcDetectFileBlock: pkg) ifNone: [ nil ]. fileToLoad ifNotNil: [version := mc versionNamed: fileToLoad. (version isKindOf: MCConfiguration) ifTrue: [^ version] ifFalse: [self normalizedRepositories do: [:repo | MCRepositoryGroup default addRepository: repo]. self normalizedRepositories do: [:repo | version workingCopy repositoryGroup addRepository: repo]. loader addVersion: version]. self logCR: ' found ' , version fileName , '...']]. ^ loader!
squeak-dev@lists.squeakfoundation.org