[squeak-dev] The Trunk: UpdateStream-ct.13.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Mar 3 22:18:40 UTC 2020
Nicolas Cellier uploaded a new version of UpdateStream to project The Trunk:
http://source.squeak.org/trunk/UpdateStream-ct.13.mcz
==================== Summary ====================
Name: UpdateStream-ct.13
Author: ct
Time: 21 December 2019, 1:00:30.046795 pm
UUID: 4f856f41-7ea6-c744-a765-4f5bdc635989
Ancestors: UpdateStream-mt.12
Fix a small bug when dropping a changeset without conflicts into the image, showing the "conflicts with updated methods" and then pressing "no"
=============== Diff against UpdateStream-mt.12 ===============
Item was changed:
----- Method: FilePackage class>>conflictsWithUpdatedMethods: (in category '*UpdateStream-instance creation') -----
conflictsWithUpdatedMethods: fullName
| conflicts changeList |
conflicts := (self fromFileNamed: fullName) conflictsWithUpdatedMethods.
+ (conflicts isNil or: [conflicts isEmpty]) ifTrue: [^ self].
- conflicts isEmpty ifTrue: [^ self].
changeList := ChangeList new.
changeList
changes: conflicts
file: (FileDirectory default readOnlyFileNamed: fullName) close.
ChangeList
open: changeList
name: 'Conflicts for ', (FileDirectory localNameFor: fullName)
multiSelect: true.!
Item was changed:
----- Method: FilePackage>>conflictsWithUpdatedMethods (in category '*UpdateStream-conflict checker') -----
conflictsWithUpdatedMethods
"Check this package for conflicts with methods in the image which are in newer updates."
| localFileName stream updateNumberString updateNumber imageUpdateNumber updateNumberChangeSet conflicts fileStream |
+
-
localFileName := FileDirectory localNameFor: fullName.
stream := ReadStream on: sourceSystem.
stream upToAll: 'latest update: #'.
updateNumberString := stream upTo: $].
stream close.
fileStream := FileStream readOnlyFileNamed: fullName.
(fileStream contentsOfEntireFile includes: Character linefeed)
ifTrue: [self notify: 'The changeset file ', localFileName, ' contains linefeeds. Proceed if...
you know that this is okay (e.g. the file contains raw binary data).'].
fileStream close.
+
-
updateNumberString isEmpty ifFalse: "remove prepended junk, if any"
[updateNumberString := (updateNumberString findTokens: Character space) last].
updateNumberString asInteger ifNil:
[(self confirm: 'Error: ', localFileName, ' has no valid Latest Update number in its header.
Do you want to enter an update number for this file?')
+ ifFalse: [^ nil]
- ifFalse: [^ self]
ifTrue: [updateNumberString := UIManager default
request: 'Please enter the estimated update number (e.g. 4332).']].
updateNumberString asInteger ifNil: [self inform: 'Conflict check cancelled.'. ^ self].
updateNumber := updateNumberString asInteger.
+
-
imageUpdateNumber := SystemVersion current highestUpdate.
updateNumber > imageUpdateNumber ifTrue:
[(self confirm: 'Warning: The update number for this file (#', updateNumberString, ')
is greater than the highest update number for this image (#', imageUpdateNumber asString, ').
This probably means you need to update your image.
Should we proceed anyway as if the file update number is #', imageUpdateNumber asString, '?')
ifTrue:
[updateNumber := imageUpdateNumber.
updateNumberString := imageUpdateNumber asString]
+ ifFalse: [^ nil]].
+
- ifFalse: [^ self]].
-
updateNumberChangeSet := self findUpdateChangeSetMatching: updateNumber.
+ updateNumberChangeSet ifNil: [^ nil].
+
- updateNumberChangeSet ifNil: [^ self].
-
Smalltalk isMorphic ifTrue: [self currentWorld findATranscript: self currentEvent].
self class logCr; logCr; log: 'Checking ', localFileName, ' (#', updateNumberString, ') for method conflicts with changesets after ', updateNumberChangeSet name, ' ...'.
+
-
conflicts := OrderedCollection new.
self classes do: [:pseudoClass |
(Array with: pseudoClass with: pseudoClass metaClass) do: [:classOrMeta |
classOrMeta selectorsDo: [:selector | | conflict |
conflict := self
checkForMoreRecentUpdateThanChangeSet: updateNumberChangeSet
pseudoClass: classOrMeta
selector: selector.
conflict ifNotNil: [conflicts add: conflict].
].
].
].
self class logCr; log: conflicts size asString, (' conflict' asPluralBasedOn: conflicts), ' found.'; logCr.
self class closeLog.
^ conflicts!
More information about the Squeak-dev
mailing list
|