The Inbox: UpdateStream-ct.13.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: UpdateStream-ct.13.mcz

commits-2
A new version of UpdateStream was added to project The Inbox:
http://source.squeak.org/inbox/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!