[squeak-dev] The Trunk: UpdateStream-ct.13.mcz

Nicolas Cellier nicolas.cellier.aka.nice at gmail.com
Wed Mar 4 08:29:44 UTC 2020


Hi Marcel,
agree, it's a quick-fix and would deserve more elegant design.
It return nil in case when user decided to abort some operation...

Le mer. 4 mars 2020 à 09:24, Marcel Taeumel <marcel.taeumel at hpi.de> a
écrit :

> Why does #conflictsWithUpdatedMethods return "nil" at all? Should always
> be an empty or non-empty collection.
>
> Best,
> Marcel
>
> Am 04.03.2020 08:49:45 schrieb karl ramberg <karlramberg at gmail.com>:
>
>
> On Tue, 3 Mar 2020 at 23:18, <commits at source.squeak.org> wrote:
>
>> 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].
>
>
>
> Could this use isEmptyOrNil  ?
>
> Best,
> Karl
>
>>
>> -       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!
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20200304/08c2bdc5/attachment.html>


More information about the Squeak-dev mailing list