[squeak-dev] The Trunk: Monticello-nice.716.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Mar 5 20:15:06 UTC 2020


Nicolas Cellier uploaded a new version of Monticello to project The Trunk:
http://source.squeak.org/trunk/Monticello-nice.716.mcz

==================== Summary ====================

Name: Monticello-nice.716
Author: nice
Time: 5 March 2020, 9:15:03.962018 pm
UUID: a1f8545a-b4f8-4bae-b349-e8bbba23816e
Ancestors: Monticello-mt.709, Monticello-eem.709, Monticello-ct.710, Monticello-ct.715, Monticello-ct.712

Merge a few inbox contributions

 Monticello-eem.709, Monticello-ct.710, Monticello-ct.715, Monticello-ct.712

Monticello-eem.709:
	Provide 'filter out unchanged methods...' to ignore any timestamp-only changes.

Monticello-ct.710:
	Improve support for traits by moving some class extensions up to ClassDefinition. This is possible because PackageInfo >> #includesClass: also works with metaclasses or traits.

Just by the way, this fixes some bugs introduced by SqueakIssueIntegration's UI extensions (see https://github.com/hpi-swa-teaching/SqueakIssueIntegration/blob/master/packages/IssueIntegration-UI.package/ClassDescription.extension/instance/toolIconSelector..st).

Monticello-ct.715:
	Fixes wrong load and unload order of MCScriptDefinitions

See http://forum.world.st/Monticello-Bug-Preamble-of-removal-is-executed-too-late-tp5108401.html. Regression tests are in Tests-ct.426.

Please review!

Monticello-ct.712:
	Reuse ToolBuilder utility in MCTool >> #showModally

=============== Diff against Monticello-mt.709 ===============

Item was removed:
- ----- 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 ] ]!

Item was removed:
- ----- Method: Class>>workingCopy (in category '*monticello') -----
- workingCopy
- 	"Answer the MCWorkingCopy in which I am defined."
- 	^ self packageInfo ifNotNil: [ : pi | pi workingCopy ]!

Item was added:
+ ----- Method: ClassDescription>>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 ] ]!

Item was added:
+ ----- Method: ClassDescription>>workingCopy (in category '*monticello') -----
+ workingCopy
+ 	"Answer the MCWorkingCopy in which I am defined."
+ 	^ self packageInfo ifNotNil: [ : pi | pi workingCopy ]!

Item was added:
+ ----- Method: MCDefinition>>wantsToBeOutermost (in category 'testing') -----
+ wantsToBeOutermost
+ 
+ 	^ false!

Item was changed:
  Object subclass: #MCDependencySorter
+ 	instanceVariableNames: 'required provided deferred orderedItems'
- 	instanceVariableNames: 'required provided orderedItems'
  	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'Monticello-Loading'!

Item was changed:
  ----- Method: MCDependencySorter>>add: (in category 'building') -----
  add: anItem
  	| requirements |
+ 	(anItem wantsToBeOutermost)
+ 		ifTrue: [^self addDeferred: anItem].
  	requirements := self unresolvedRequirementsFor: anItem.
  	requirements isEmpty
  		ifTrue: [self addToOrder: anItem]
  		ifFalse: [self addRequirements: requirements for: anItem].
  	^anItem!

Item was added:
+ ----- Method: MCDependencySorter>>addDeferred (in category 'building') -----
+ addDeferred
+ 	deferred do: [:ea |
+ 		self addToOrder: ea].!

Item was added:
+ ----- Method: MCDependencySorter>>addDeferred: (in category 'private') -----
+ addDeferred: anItem
+ 	^ deferred add: anItem!

Item was changed:
  ----- Method: MCDependencySorter>>initialize (in category 'initialize-release') -----
  initialize
  	provided := Set new.
  	required := Dictionary new.
+ 	orderedItems := OrderedCollection new.
+ 	deferred := OrderedCollection new.!
- 	orderedItems := OrderedCollection new.!

Item was changed:
  ----- Method: MCHttpRepository class>>useSharedWebClientInstance (in category 'preferences') -----
  useSharedWebClientInstance
  	
  	<preference: 'Use shared WebClient instance'
  		category: 'Monticello'
  		description: 'When true, use a shared WebClient instance to speed up downloads from MCHttpRepositories. Requires WebClient to be present.'
  		type: #Boolean>
  	^UseSharedWebClientInstance ifNil: [
+ 		"There is some issue on Windows and Macos, so don't use it there by default. See http://lists.squeakfoundation.org/pipermail/squeak-dev/2019-September/thread.html#203921 for details."
+ 		Smalltalk os platformName ~= 'Win32' and: [Smalltalk os platformName ~= 'Mac OS']]!
- 		"The is some issue on Windows, so don't use it there by default. See http://lists.squeakfoundation.org/pipermail/squeak-dev/2019-September/thread.html#203921 for details."
- 		Smalltalk os platformName ~= 'Win32' ]!

Item was added:
+ ----- Method: MCOperationsBrowser>>filterOutUnchangedMethods (in category 'actions') -----
+ filterOutUnchangedMethods
+ 	"Remove from the list methods that only have changed timestamps"
+ 	| unchangedMethods |
+ 	unchangedMethods := self unchangedMethods.
+ 	(self confirm: ('Ignore {1} methods that only differ in timestamp?' translated
+ 		format: {unchangedMethods size}))
+ 		ifTrue:
+ 			[items := items reject: [:op| op isUnchangedMethod].
+ 			 self changed: #list]
+ !

Item was changed:
  ----- Method: MCOperationsBrowser>>methodListMenu: (in category 'menus') -----
  methodListMenu: aMenu
  	selection ifNotNil:
  		[aMenu addList: #(
  			('install'	 installSelection)
  			('revert (x)'	 revertSelection)
  			('browse origin' browseSelectionOrigin) 
  			-)].
  	self unchangedMethods ifNotEmpty:
  		[aMenu addList: #(
  			('revert unchanged methods...'	revertUnchangedMethods) 
+ 			('filter out unchanged methods...'	filterOutUnchangedMethods) 
  			-)].
  	super methodListMenu: aMenu.
  	^ aMenu!

Item was changed:
  ----- Method: MCOperationsBrowser>>revertUnchangedMethods (in category 'actions') -----
  revertUnchangedMethods
  	"revert methods that only have changed timestamps"
  	| loader unchangedMethods |
+ 	unchangedMethods := self unchangedMethods.
+ 	(self confirm: ('Revert {1} methods that only differ in timestamp?' translated
+ 		format: {unchangedMethods size}))
+ 		ifTrue:
+ 			[loader := MCPackageLoader new.
- 	unchangedMethods := items select: [:op | op isUnchangedMethod].
- 	(self confirm: ('Revert {1} methods that only differ in timestamp?' translated format: {unchangedMethods size}))
- 		ifTrue: [
- 			loader := MCPackageLoader new.
  			unchangedMethods do: [:op | op inverse applyTo: loader].
  			loader loadWithName: self changeSetNameForInstall].
  !

Item was changed:
  ----- Method: MCPackageLoader>>sorterForItems: (in category 'private') -----
  sorterForItems: aCollection
  	| sorter |
  	sorter := MCDependencySorter items: aCollection.
  	sorter addExternalProvisions: self provisions.
+ 	sorter addDeferred.
  	^ sorter!

Item was added:
+ ----- Method: MCPostscriptDefinition>>wantsToBeOutermost (in category 'nil') -----
+ wantsToBeOutermost
+ 
+ 	^ true!

Item was added:
+ ----- Method: MCRemovalPreambleDefinition>>wantsToBeOutermost (in category 'testing') -----
+ wantsToBeOutermost
+ 
+ 	^ true!

Item was changed:
  ----- Method: MCTool>>showModally (in category 'morphic ui') -----
  showModally
  	modalProcess := Processor activeProcess.
  	self window openInWorldExtent: self defaultExtent.
+ 	ToolBuilder default runModal: self window.
- 	[self window world notNil] whileTrue: [
- 		self window outermostWorldMorph doOneCycle.
- 	].
  	morph := nil.
  	^ modalValue!



More information about the Squeak-dev mailing list