A new version of DeltaStreams-Model was added to project DeltaStreams:
http://www.squeaksource.com/DeltaStreams/DeltaStreams-Model-gk.20.mcz
==================== Summary ====================
Name: DeltaStreams-Model-gk.20
Author: gk
Time: 7 September 2009, 6:27:02 am
UUID: 9cf8d97e-16dd-4839-a2e4-6f5d001f513d
Ancestors: DeltaStreams-Model-Igor.Stasenko.19
Removed some cruft.
Removed the grouper decoration.
Renamed clearChanges to removeAll.
=============== Diff against DeltaStreams-Model-Igor.Stasenko.19 ===============
Item was added:
+ ----- Method: DSChangeSequence>>removeAll (in category 'applying') -----
+ removeAll
+ "Remove all changes and return them."
+
+ | oldChanges |
+ oldChanges := changes.
+ changes := nil.
+ ^oldChanges!
Item was changed:
----- Method: DSMethodChange>>fromChange: (in category 'initialize-release') -----
fromChange: aChange
super fromChange: aChange.
- self className: aChange className.
self selector: aChange selector.
self meta: aChange meta.
self source: aChange source.
self protocol: aChange protocol.
self stamp: aChange stamp. !
Item was changed:
+ ----- Method: DSDelta>>compress (in category 'changes') -----
- ----- Method: DSDelta>>compress (in category 'manipulate') -----
compress
"Modify changes so that they are compacted into the minimal form
still producing the equivalent end result. In other words - remove redundancy.
Fir we move all class rename changes to the beginning, but AFTER any DoIts.
Then we remove all redundant shadowed changes.
Finally we merge those we can merge."
changeSequence ifNotNil: [
changeSequence moveClassNameChanges; removeShadows; mergeChanges]!
Item was changed:
----- Method: DSDelta>>remove: (in category 'changes') -----
remove: aChange
| change |
+ change := changeSequence remove: change.
- change := self changes remove: change.
- self grouper ifNotNil: [self grouper remove: change].
self changed: #changeList.
^ change!
Item was changed:
DSChange subclass: #DSDoIt
+ instanceVariableNames: 'contextWasNil kind status antiDoIt doIt'
- instanceVariableNames: 'expression antiExpression contextWasNil kind status antiDoIt doIt'
classVariableNames: ''
poolDictionaries: ''
category: 'DeltaStreams-Model-Base'!
!DSDoIt commentStamp: 'gk 9/5/2009 15:24' prior: 0!
A DSDoIt change is only recorded if you expressly configure the Delta to record them. While catching all doits this also creates redundant doits because for class definition changes the Delta will record both the event coming from ClassBuilder and then the doit itself too. Not sure exactly how we can prevent this in a NICE way
Currently DoIts are handled like this:
- We only record them if the Delta is configured to do that, see #recordDoits:
- We only apply them if they are marked explicitly to be applied, see #executeOnApply:
- We only consider a DoIt reversable if the antiDoIt if is set to something other than nil.
Good rules to follow:
1. Do not record or use DoIts. :) If you really need to have a DoIt in your Delta, put it there manually.
2. If you record DoIts because you do not want to miss anything , prune them out before distributing the Delta.
3. If you still have a DoIt in your Delta that you intend to distribute, make sure that:
- It can cope with missing globals/classes!!
- It can be safely run multiple times without problems!!
- You marked it to be run on apply using #executeOnApply:. This is an EXPLICIT step for a reason.
- If it should do able to be REVERSED you need to supply an antiDoIt.
- Put DoIts preferrably first or last in the Delta to avoid strange situations. Remember that even if changes are ordered they may be applied atomically by an applier.
NOTE: A Delta containing any DoIt will be visualized as "dangerous" in the user interfaces so please avoid them unless you REALLY need them.!
Item was changed:
+ ----- Method: DSDelta>>classGroupsDo: (in category 'changes') -----
- ----- Method: DSDelta>>classGroupsDo: (in category 'manipulate') -----
classGroupsDo: aBlock
"Execute a block for all groups of changes per class."
| groups coll |
groups := Dictionary new.
self changes do: [:each |
coll := groups at: each className ifAbsentPut: [SortedCollection new].
coll add: each].
groups values do: [:group | aBlock value: group]!
Item was changed:
----- Method: DSDelta>>add: (in category 'changes') -----
add: aChange
+ changeSequence add: aChange.
- self changes add: aChange.
- self grouper ifNotNil: [self grouper add: aChange].
self changed: #changeList.
^ aChange!
Item was removed:
- ----- Method: DSChangeSequence>>clearChanges (in category 'applying') -----
- clearChanges
- "Remove all changes and return them."
-
- | oldChanges |
- oldChanges := changes.
- changes := nil.
- ^oldChanges!
Item was removed:
- ----- Method: DSDoIt>>expression (in category 'accessing') -----
- expression
- ^ expression!
Item was removed:
- ----- Method: DSDelta>>grouper (in category 'accessing') -----
- grouper
-
- ^self propertyAt: #grouper!
Item was removed:
- ----- Method: DSDelta>>test (in category 'accessing') -----
- test
-
- ^test!
A new version of DeltaStreams-Model was added to project DeltaStreams:
http://www.squeaksource.com/DeltaStreams/DeltaStreams-Model-Igor.Stasenko.1…
==================== Summary ====================
Name: DeltaStreams-Model-Igor.Stasenko.19
Author: Igor.Stasenko
Time: 7 September 2009, 5:59:11 am
UUID: 9a4c0c26-2aa2-7a40-9db8-5c9704f703f6
Ancestors: DeltaStreams-Model-Igor.Stasenko.18
- a better fix of #isReversable and #executeOnApply code in DSDoIt
- still wonder what are 'expression' ivars added for?
=============== Diff against DeltaStreams-Model-Igor.Stasenko.18 ===============
Item was changed:
----- Method: DSDoIt>>executeOnApply (in category 'configuration') -----
executeOnApply
+ "Auto-convert nil to false"
+ ^(self propertyAt: #executeOnApply) == true!
- ^self propertyAt: #executeOnApply!
Item was changed:
----- Method: DSDoIt>>isReversable (in category 'testing') -----
isReversable
"If this DoIt is marked to NOT execute (then it of course does nothing and is
trivially reversable) or if there is a supplied antiDoIt signifying that it indeed
can be reversed.
NOTE: We trust the developer here. isReversable does NOT mean that it will work."
+ ^self executeOnApply not or: [antiDoIt notNil]!
- ^self executeOnApply == false or: [antiDoIt notNil]!
A new version of DeltaStreams-Model was added to project DeltaStreams:
http://www.squeaksource.com/DeltaStreams/DeltaStreams-Model-Igor.Stasenko.1…
==================== Summary ====================
Name: DeltaStreams-Model-Igor.Stasenko.18
Author: Igor.Stasenko
Time: 7 September 2009, 5:09:30 am
UUID: 7b30c951-3fce-b045-8a83-adb83114f5f0
Ancestors: DeltaStreams-Model-Igor.Stasenko.17
- fixed some stuff in DSDoIt to make it play
nicely with viewer
=============== Diff against DeltaStreams-Model-Igor.Stasenko.17 ===============
Item was changed:
----- Method: DSDoIt>>applyUsing: (in category 'applying') -----
applyUsing: anApplier
"Apply this change to the image. Double dispatch."
+ ^ anApplier applyDoIt: self!
- anApplier applyDoIt: self!
Item was added:
+ ----- Method: DSDoIt>>doIt (in category 'accessing') -----
+ doIt
+ ^ doIt!
Item was added:
+ ----- Method: DSDoIt>>expression (in category 'accessing') -----
+ expression
+ ^ expression!
Item was changed:
----- Method: DSDoIt>>isReversable (in category 'testing') -----
isReversable
"If this DoIt is marked to NOT execute (then it of course does nothing and is
trivially reversable) or if there is a supplied antiDoIt signifying that it indeed
can be reversed.
NOTE: We trust the developer here. isReversable does NOT mean that it will work."
+ ^self executeOnApply == false or: [antiDoIt notNil]!
- ^self executeOnApply not or: [antiDoIt notNil]!
A new version of DeltaStreams-Model was added to project DeltaStreams:
http://www.squeaksource.com/DeltaStreams/DeltaStreams-Model-Igor.Stasenko.1…
==================== Summary ====================
Name: DeltaStreams-Model-Igor.Stasenko.17
Author: Igor.Stasenko
Time: 7 September 2009, 4:44:52 am
UUID: 11501f55-f906-e849-a0ae-2ab9372ab60c
Ancestors: DeltaStreams-Model-gk.16
- removed unsent message
=============== Diff against DeltaStreams-Model-gk.16 ===============
Item was removed:
- ----- Method: DSVisitor>>applyClassSuperclassChanged: (in category 'class changes') -----
- applyClassSuperclassChanged: change
- "Changed a class superclass."
-
- ^ self applyClassChange: change!
A new version of DeltaStreams-Installer was added to project DeltaStreams:
http://www.squeaksource.com/DeltaStreams/DeltaStreams-Installer-Igor.Stasen…
==================== Summary ====================
Name: DeltaStreams-Installer-Igor.Stasenko.6
Author: Igor.Stasenko
Time: 6 September 2009, 9:51:16 am
UUID: 8aea9691-d2c3-2447-8f8f-515cb7a905c7
Ancestors: DeltaStreams-Installer-gk.5
- added load of DeltaStreams-Browser
=============== Diff against DeltaStreams-Installer-gk.5 ===============
Item was changed:
----- Method: DSInstaller class>>install (in category 'as yet unclassified') -----
install
"DSInstaller install"
Installer squeaksource
project: 'SystemEditor'; "Main mechanism used for actual Delta apply"
install: 'SystemEditor-Core';
install: 'SystemEditor-Squeak';
install: 'SystemEditor-Traits';
install: 'SystemEditor-Tests';
install: 'SystemEditorBrowser';
project: 'Tirade'; "This is used for serialization/deserialization - not essential unless you need to store Deltas"
install: 'Tirade';
install: 'Tirade-Tests';
project: 'DeltaStreams';
install: 'System'; "Fixes for change notifications"
install: 'Traits'; "Fixes for change notifications"
install: 'Monticello'; "Fixes for change notifications"
install: 'SystemChangeNotification-Tests';
install: 'DeltaStreams-Model'; "Domain model of Deltas"
install: 'DeltaStreams-Logging'; "Extensions for hooking into SystemChangeNotification in Squeak"
install: 'DeltaStreams-Tirade'; "Support for filing out/in Deltas in Tirade syntax"
+ install: 'DeltaStreams-Browser'; "ToolBuilder based UI"
install: 'DeltaStreams-Tests'. "All the tests for all packages"
self inform: 'DeltaStreams successfully installed!! Time to put your helmet on.'
!
A new version of DeltaStreams-Logging was added to project DeltaStreams:
http://www.squeaksource.com/DeltaStreams/DeltaStreams-Logging-gk.8.mcz
==================== Summary ====================
Name: DeltaStreams-Logging-gk.8
Author: gk
Time: 6 September 2009, 4:43:38 am
UUID: c16bf752-84d5-4f80-8d6d-b83ec428ee30
Ancestors: DeltaStreams-Logging-gk.7
Fix so that class comments are saved as strings. Not sure how we should treat Text .. what does MC do?
=============== Diff against DeltaStreams-Logging-gk.7 ===============
Item was changed:
----- Method: DSDelta>>logClassCommentChangedEvent: (in category '*deltastreams-logging') -----
logClassCommentChangedEvent: event
"A class comment has been changed."
(self addClassChange: DSClassCommentChange from: event)
+ oldComment: event oldComment asString stamp: event oldStamp!
- oldComment: event oldComment stamp: event oldStamp!