[squeak-dev] The Inbox: Monticello-cmm.697.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Apr 22 18:21:12 UTC 2019
Chris Muller uploaded a new version of Monticello to project The Inbox:
http://source.squeak.org/inbox/Monticello-cmm.697.mcz
==================== Summary ====================
Name: Monticello-cmm.697
Author: cmm
Time: 22 April 2019, 1:21:10.123489 pm
UUID: 060eb72d-b40a-45d9-a92e-36ad3103ea8e
Ancestors: Monticello-nice.695
- Fix revisions of class definitions when there's another PackageInfo defined whose full name is only a prefix of the working copy the selected class belongs to.
- Check the local package-cache before hitting the server for operations where the ancestral UUID is known, such as diffing from the History list. Keep its allFileNamesCache up to date.
=============== Diff against Monticello-nice.695 ===============
Item was changed:
----- Method: Class>>packageInfo (in category '*monticello') -----
packageInfo
+ ^ (PackageInfo allPackages select: [ : each | each includesClass: self ])
+ ifEmpty: [ nil ]
+ ifNotEmpty:
+ [ : myPackages | "Select the most-qualified match."
+ myPackages detectMax: [ : each | each packageName size ] ]!
- ^ PackageInfo allPackages
- detect: [ : each | each includesClass: self ]
- ifNone: [ nil ]!
Item was removed:
- ----- Method: MCRepository>>isTrunkBackup (in category 'testing') -----
- isTrunkBackup
- ^ false!
Item was changed:
----- Method: MCRepository>>prepareVersionForStorage: (in category 'accessing') -----
prepareVersionForStorage: aVersion
^ self alwaysStoreDiffs
ifTrue: [aVersion asDiffAgainst:
+ (self withCache closestAncestorVersionFor: aVersion info ifNone: [^ aVersion])]
- (self closestAncestorVersionFor: aVersion info ifNone: [^ aVersion])]
ifFalse: [aVersion]!
Item was added:
+ ----- Method: MCRepository>>withCache (in category 'accessing') -----
+ withCache
+ "Answer the receiver with package-cache in front of it."
+ ^ MCRepositoryGroup with: self!
Item was added:
+ ----- Method: MCRepositoryGroup class>>with: (in category 'instance creation') -----
+ with: aMCRepository
+ ^ self new
+ addRepository: aMCRepository ;
+ yourself!
Item was added:
+ ----- Method: MCRepositoryGroup>>closestAncestorVersionFor:ifNone: (in category 'accessing') -----
+ closestAncestorVersionFor: anAncestry ifNone: errorBlock
+ anAncestry breadthFirstAncestorsDo:
+ [:ancestorInfo |
+ (self versionWithInfo: ancestorInfo) ifNotNil: [:v | ^ v]].
+ ^ errorBlock value!
Item was changed:
----- Method: MCRepositoryGroup>>flushAllFilenames (in category 'private') -----
flushAllFilenames
+ self repositories do: [ : each | each flushAllFilenames ]!
- repositories do: [ : each | each flushAllFilenames ]!
Item was added:
+ ----- Method: MCRepositoryGroup>>highestNumberedVersionForPackageNamed: (in category 'accessing') -----
+ highestNumberedVersionForPackageNamed: aString
+ | highest |
+ highest := nil.
+ "no 'self', to purposefully skip the package-cache for this UUID-less access."
+ repositories do:
+ [ : each | | current |
+ current := each highestNumberedVersionNameForPackageNamed: aString.
+ current ifNotNil:
+ [ highest
+ ifNil: [ highest := each -> current ]
+ ifNotNil: [ current versionNumber > highest versionNumber
+ ifTrue: [ highest := each -> current ] ] ] ].
+ ^ highest key versionNamed: highest value!
Item was changed:
----- Method: MCRepositoryGroup>>includesVersionNamed: (in category 'repository-api') -----
includesVersionNamed: aString
+ ^ self repositories anySatisfy: [ : each | [each includesVersionNamed: aString] on: Error do: [false]]!
- ^ repositories anySatisfy: [ : each | [each includesVersionNamed: aString] on: Error do: [false]]!
Item was changed:
----- Method: MCRepositoryGroup>>versionNamed: (in category 'repository-api') -----
versionNamed: aMCVersionName
+ self repositories do:
- repositories do:
[ : each | (each versionNamed: aMCVersionName) ifNotNil: [ : ver | ^ ver ] ].
^ nil!
Item was changed:
----- Method: MCRepositoryGroup>>versionWithInfo:ifAbsent: (in category 'repository-api') -----
versionWithInfo: aVersionInfo ifAbsent: aBlock
+ self repositories do:
- repositories do:
[ : each | ([each
versionWithInfo: aVersionInfo
ifAbsent: [ nil ]] on: NetworkError do: [ : err | nil ]) ifNotNil:
[ : ver | ^ ver ] ].
^ aBlock value!
Item was added:
+ ----- Method: MCRepositoryGroup>>withCache (in category 'accessing') -----
+ withCache
+ ^ self!
Item was changed:
----- Method: MCVersionNotification>>initializeWithVersion:repository: (in category 'private') -----
initializeWithVersion: aVersion repository: aRepository
version := aVersion.
repository := aRepository.
+ ancestor := repository withCache closestAncestorVersionFor: version info ifNone: [].
- ancestor := repository closestAncestorVersionFor: version info ifNone: [].
changes := ancestor
ifNil: [#()]
ifNotNil: [(version snapshot patchRelativeToBase: ancestor snapshot) operations sorted]!
Item was changed:
----- Method: MCWorkingCopy>>changesRelativeToRepository: (in category 'operations') -----
+ changesRelativeToRepository: aRepository
- changesRelativeToRepository: aRepository
| ancestorVersion ancestorSnapshot |
+ ancestorVersion := aRepository withCache
+ closestAncestorVersionFor: ancestry
+ ifNone: [ nil ].
+ ancestorSnapshot := ancestorVersion
+ ifNil: [ MCSnapshot empty ]
+ ifNotNil: [ ancestorVersion snapshot ].
- ancestorVersion := aRepository closestAncestorVersionFor: ancestry ifNone: [].
- ancestorSnapshot := ancestorVersion ifNil: [MCSnapshot empty] ifNotNil: [ancestorVersion snapshot].
^ package snapshot patchRelativeToBase: ancestorSnapshot!
Item was changed:
----- Method: MCWorkingCopyBrowser>>viewChanges (in category 'actions') -----
viewChanges
| patch |
self canSave ifTrue:
+ [patch := workingCopy changesRelativeToRepository: self repository withCache.
+ patch isNil ifTrue: [ ^self ].
- [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;
environmentInDisplayingImage: workingCopy environment;
+ show ] ]!
- show]]!
More information about the Squeak-dev
mailing list
|