[squeak-dev] The Trunk: Monticello-topa.599.mcz
Tobias Pape
Das.Linux at gmx.de
Wed Sep 3 19:55:23 UTC 2014
Hi,
On 03.09.2014, at 21:43, Chris Muller <asqueaker at gmail.com> wrote:
> A quick test and it seems to be working properly this time. Thank you!
>
> The purpose of *reviewing* is, you might need to make a *change*!
> (otherwise, why bother reviewing?) So if I need to make a change, I
> need that change to be *saved*! It hardly seems like something that
> logical should need to be called "CM's workflow" but if that's what it
> takes for it to behave this way, fine by me. ;-)
Well, I just remembered your objections, hence the "name" ;)
but now that I actually can review the changes, (because they are there),
I probably will act more in that way than before.
>
> BTW, what did you mean by:
>
> "Allow for proper comparison of MCPatchOperation?"
>
> Is that just about this same feature -- the fact that the user is able
> to select certain PatchOperations to be ignored or did you mean some
> other, unrelated fix?
No, it is a prerequisite fix.
The addition of #= and #hash for MCAddition, MCModification, MCRemoval
>
> Thanks again!
>
:) You should thank more Bert than me.
Best
-Tobias
> On Wed, Sep 3, 2014 at 7:37 AM, <commits at source.squeak.org> wrote:
>> Tobias Pape uploaded a new version of Monticello to project The Trunk:
>> http://source.squeak.org/trunk/Monticello-topa.599.mcz
>>
>> ==================== Summary ====================
>>
>> Name: Monticello-topa.599
>> Author: topa
>> Time: 3 September 2014, 2:36:05.016 pm
>> UUID: 4b7e0536-55d7-4a52-91fe-82bb2d8a6531
>> Ancestors: Monticello-bp.598, Monticello-bf.540
>>
>> * Merge bf.540: Save dialog now shows a list of changes to be submitted. Clicking a list item shows a diff in the lower pane. Advanced users can also make this save ignore individual changes using the item's context menu.
>> * On 'Accept' another snapshot is created to capture changes done while the dialog was open (to not break CM's workflow :).
>> * Allow for proper comparison of MCPatchOperation
>>
>> =============== Diff against Monticello-bp.598 ===============
>>
>> Item was added:
>> + ----- Method: MCAddition>>= (in category 'as yet unclassified') -----
>> + = other
>> + ^ other isAddition and: [definition = other definition]!
>>
>> Item was added:
>> + ----- Method: MCAddition>>hash (in category 'as yet unclassified') -----
>> + hash
>> + ^ definition hash!
>>
>> Item was added:
>> + ----- Method: MCModification>>= (in category 'as yet unclassified') -----
>> + = other
>> + ^ other isModification
>> + and: [obsoletion = other obsoletion
>> + and: [modification = other modification]]!
>>
>> Item was added:
>> + ----- Method: MCModification>>hash (in category 'as yet unclassified') -----
>> + hash
>> + ^ obsoletion hash bitXor: modification hash!
>>
>> Item was added:
>> + ----- Method: MCPatch>>ignoring: (in category 'accessing') -----
>> + ignoring: ignoredOperations
>> + ^ MCPatch operations: (operations difference: ignoredOperations)!
>>
>> Item was added:
>> + ----- Method: MCRemoval>>= (in category 'as yet unclassified') -----
>> + = other
>> + ^ other isRemoval and: [definition = other definition]!
>>
>> Item was added:
>> + ----- Method: MCRemoval>>hash (in category 'as yet unclassified') -----
>> + hash
>> + ^ definition hash!
>>
>> Item was added:
>> + Notification subclass: #MCRepositoryRequest
>> + instanceVariableNames: ''
>> + classVariableNames: ''
>> + poolDictionaries: ''
>> + category: 'Monticello-UI'!
>>
>> Item was changed:
>> + MCPatchBrowser subclass: #MCSaveVersionDialog
>> + instanceVariableNames: 'name message ignore patchBlock'
>> - MCTool subclass: #MCSaveVersionDialog
>> - instanceVariableNames: 'name message'
>> classVariableNames: ''
>> poolDictionaries: ''
>> category: 'Monticello-UI'!
>>
>> Item was changed:
>> ----- Method: MCSaveVersionDialog>>accept (in category 'as yet unclassified') -----
>> accept
>> + self updateItems.
>> self answer:
>> (Array
>> with: (self findTextMorph: #versionName) text asString
>> + with: (self findTextMorph: #logMessage) text asString
>> + with: ignore)
>> + !
>> - with: (self findTextMorph: #logMessage) text asString)
>> - !
>>
>> Item was changed:
>> ----- Method: MCSaveVersionDialog>>defaultExtent (in category 'as yet unclassified') -----
>> defaultExtent
>> + ^ 700 at 600!
>> - ^ 400 at 300!
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>ignore (in category 'as yet unclassified') -----
>> + ignore
>> + ^ ignore ifNil: [ignore := Set new]!
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>ignoreSelection (in category 'as yet unclassified') -----
>> + ignoreSelection
>> + selection
>> + ifNil: [ignore size = items size
>> + ifFalse: [ignore addAll: items]
>> + ifTrue: [ignore removeAll]]
>> + ifNotNil: [
>> + ignore remove: selection ifAbsent: [
>> + ignore add: selection].
>> + self selection < items size
>> + ifTrue: [self selection: self selection + 1]].
>> + self changed: #list
>> + !
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>installSelection (in category 'as yet unclassified') -----
>> + installSelection
>> + super installSelection.
>> + selection ifNotNil: [
>> + ignore remove: selection ifAbsent: [].
>> + self changed: #list].
>> +
>> + !
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>list (in category 'as yet unclassified') -----
>> + list
>> + ^ self items collect: [:ea |
>> + (self ignore includes: ea)
>> + ifFalse: [ea summary]
>> + ifTrue: [Text string: '( ', ea summary, ' )' attribute: TextEmphasis struckOut ]]!
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>message (in category 'accessing') -----
>> + message
>> +
>> + ^ message!
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>message: (in category 'accessing') -----
>> + message: anObject
>> +
>> + message := anObject!
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>methodListKey:from: (in category 'as yet unclassified') -----
>> + methodListKey: aKeystroke from: aListMorph
>> + aKeystroke caseOf: {
>> + [$I] -> [self ignoreSelection].
>> + } otherwise: [super methodListKey: aKeystroke from: aListMorph ]!
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>methodListMenu: (in category 'as yet unclassified') -----
>> + methodListMenu: aMenu
>> + aMenu addList:#(
>> + ('ignore (I)' ignoreSelection 'Do not include this change when saving')
>> + -).
>> + super methodListMenu: aMenu.
>> + ^aMenu!
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>name: (in category 'accessing') -----
>> + name: anObject
>> +
>> + name := anObject!
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>patchBlock (in category 'accessing') -----
>> + patchBlock
>> +
>> + ^ patchBlock!
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>patchBlock: (in category 'accessing') -----
>> + patchBlock: anObject
>> +
>> + patchBlock := anObject.
>> + self updateItems!
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>revertSelection (in category 'as yet unclassified') -----
>> + revertSelection
>> + super revertSelection.
>> + selection ifNotNil: [
>> + ignore add: selection.
>> + self changed: #list].
>> + !
>>
>> Item was added:
>> + ----- Method: MCSaveVersionDialog>>updateItems (in category 'as yet unclassified') -----
>> + updateItems
>> + " update our items using the patchBlock "
>> + self patch: patchBlock value!
>>
>> Item was changed:
>> ----- Method: MCSaveVersionDialog>>widgetSpecs (in category 'as yet unclassified') -----
>> widgetSpecs
>> ^ #(
>> + ((listMorph:selection:menu:keystroke: list selection methodListMenu: methodListKey:from:) (0 0 0.5 0.6) )
>> + ((textMorph: versionName) (0.5 0 1 0) (0 0 0 30))
>> + ((textMorph: logMessage) (0.5 0 1 0.6) (0 30 0 -30))
>> + ((buttonRow) (0.5 0.6 1 0.6) (0 -30 0 0))
>> + ((textMorph: text) (0 0.6 1 1) (0 0 0 0))
>> - ((textMorph: versionName) (0 0 1 0) (0 0 0 30))
>> - ((textMorph: logMessage) (0 0 1 1) (0 30 0 -30))
>> - ((buttonRow) (0 1 1 1) (0 -40 0 0))
>> )!
>>
>> Item was changed:
>> ----- Method: MCTool>>showModally (in category 'morphic ui') -----
>> showModally
>> modalProcess := Processor activeProcess.
>> + self window openInWorldExtent: self defaultExtent.
>> - self window openInWorldExtent: (400 at 400).
>> [self window world notNil] whileTrue: [
>> self window outermostWorldMorph doOneCycle.
>> ].
>> morph := nil.
>> ^ modalValue!
>>
>> Item was changed:
>> Notification subclass: #MCVersionNameAndMessageRequest
>> + instanceVariableNames: 'suggestion initialMessage patchBlock'
>> - instanceVariableNames: 'suggestion initialMessage'
>> classVariableNames: ''
>> poolDictionaries: ''
>> category: 'Monticello-Versioning'!
>>
>> Item was changed:
>> ----- Method: MCVersionNameAndMessageRequest>>defaultAction (in category 'handling') -----
>> defaultAction
>> ^ MCSaveVersionDialog new
>> versionName: suggestion;
>> logMessage: initialMessage;
>> + patchBlock: patchBlock;
>> showModally!
>>
>> Item was added:
>> + ----- Method: MCVersionNameAndMessageRequest>>patchBlock (in category 'accessing') -----
>> + patchBlock
>> + ^ patchBlock!
>>
>> Item was added:
>> + ----- Method: MCVersionNameAndMessageRequest>>patchBlock: (in category 'accessing') -----
>> + patchBlock: aBlock
>> + patchBlock := aBlock
>> + !
>>
>> Item was changed:
>> ----- Method: MCWorkingCopy>>newVersion (in category 'operations') -----
>> newVersion
>> + | packageSnapshot parentSnapshot patch |
>> + parentSnapshot := self parentSnapshot.
>> ^ (self requestVersionNameAndMessageWithSuggestion: self uniqueVersionName
>> + initialMessage: self patchMessageSuggestion
>> + patchBlock: [patch := (packageSnapshot := package snapshot) patchRelativeToBase: parentSnapshot]
>> + ) ifNotNil: [:tuple |
>> + self newVersionWithName: tuple first withBlanksTrimmed
>> + message: (self patchMessageStripped: tuple second)
>> + snapshot: (tuple third
>> + ifEmpty: [packageSnapshot]
>> + ifNotEmpty: [
>> + MCPatcher apply: (patch ignoring: tuple third)
>> + to: parentSnapshot])]
>> - initialMessage: self patchMessageSuggestion) ifNotNil:
>> - [:pair |
>> - self newVersionWithName: pair first withBlanksTrimmed
>> - message: (self patchMessageStripped: pair last)].
>> !
>>
>> Item was changed:
>> ----- Method: MCWorkingCopy>>newVersionWithName:message: (in category 'operations') -----
>> newVersionWithName: nameString message: messageString
>> + ^self newVersionWithName: nameString message: messageString snapshot: package snapshot!
>> - | info deps |
>> - info := ancestry infoWithName: nameString message: messageString.
>> - ancestry := MCWorkingAncestry new addAncestor: info.
>> - self modified: true; modified: false.
>> -
>> - deps := self requiredPackages collect:
>> - [:ea |
>> - MCVersionDependency
>> - package: ea
>> - info: ea workingCopy currentVersionInfo].
>> -
>> - ^ MCVersion
>> - package: package
>> - info: info
>> - snapshot: package snapshot
>> - dependencies: deps!
>>
>> Item was added:
>> + ----- Method: MCWorkingCopy>>newVersionWithName:message:snapshot: (in category 'operations') -----
>> + newVersionWithName: nameString message: messageString snapshot: aSnapshot
>> + | info deps clean |
>> + info := ancestry infoWithName: nameString message: messageString.
>> + ancestry := MCWorkingAncestry new addAncestor: info.
>> + clean := (package snapshot patchRelativeToBase: aSnapshot) isEmpty.
>> + self modified: clean; modified: clean not. "hack to ensure label is updated"
>> +
>> + deps := self requiredPackages collect:
>> + [:ea |
>> + MCVersionDependency
>> + package: ea
>> + info: ea workingCopy currentVersionInfo].
>> +
>> + ^ MCVersion
>> + package: package
>> + info: info
>> + snapshot: aSnapshot
>> + dependencies: deps!
>>
>> Item was added:
>> + ----- Method: MCWorkingCopy>>parentSnapshot (in category 'private') -----
>> + parentSnapshot
>> + "prefer parent in selected repository"
>> + MCRepositoryRequest signal ifNotNil: [:repo |
>> + self ancestors do: [:ancestor |
>> + (repo versionWithInfo: ancestor)
>> + ifNotNil: [:ver | ^ver snapshot]]].
>> + "otherwise, look in all repositories"
>> + self ancestors do: [:ancestor |
>> + (self repositoryGroup versionWithInfo: ancestor)
>> + ifNotNil: [:ver | ^ver snapshot]].
>> + "otherwise"
>> + ^MCSnapshot empty!
>>
>> Item was added:
>> + ----- Method: MCWorkingCopy>>patchMessageAncestry (in category 'operations') -----
>> + patchMessageAncestry
>> + ^ String streamContents: [:strm |
>> + strm nextPutAll: ancestry summary; cr.
>> + self ancestors do: [:ancestor |
>> + strm cr.
>> + strm nextPutAll: ancestor name; nextPut: $:; crtab.
>> + strm nextPutAll: ancestor message; cr.]]
>> + !
>>
>> Item was changed:
>> ----- Method: MCWorkingCopy>>patchMessageChanges (in category 'operations') -----
>> patchMessageChanges
>> + | changes |
>> + changes := package snapshot patchRelativeToBase: self parentSnapshot.
>> - | changes parentInfo parentSnapshot |
>> - parentInfo := self ancestors
>> - ifEmpty: [nil]
>> - ifNotEmpty: [self ancestors first].
>> - parentSnapshot := self findSnapshotWithVersionInfo: parentInfo.
>> - changes := package snapshot patchRelativeToBase: parentSnapshot.
>> ^ (MCPatchMessage new patch: changes) message!
>>
>> Item was changed:
>> ----- Method: MCWorkingCopy>>patchMessageSuggestion (in category 'operations') -----
>> patchMessageSuggestion
>> + ^ String streamContents: [:strm | strm
>> + nextPutAll: self patchMessageDefault; cr;cr;
>> + nextPutAll: self patchMessageChangesDelimiter; cr;
>> + nextPutAll: self patchMessageAncestry]!
>> - ^ self patchMessageDefault, String cr, String cr,
>> - self patchMessageChangesDelimiter, String cr,
>> - self patchMessageChangesHeader, String cr,
>> - self patchMessageChanges!
>>
>> Item was removed:
>> - ----- Method: MCWorkingCopy>>requestVersionNameAndMessageWithSuggestion:initialMessage: (in category 'private') -----
>> - requestVersionNameAndMessageWithSuggestion: nameString initialMessage: msgString
>> - ^ (MCVersionNameAndMessageRequest new
>> - suggestedName: nameString;
>> - initialMessage: msgString
>> - ) signal!
>>
>> Item was added:
>> + ----- Method: MCWorkingCopy>>requestVersionNameAndMessageWithSuggestion:initialMessage:patchBlock: (in category 'private') -----
>> + requestVersionNameAndMessageWithSuggestion: nameString initialMessage: msgString patchBlock: aPatchBlock
>> + ^ (MCVersionNameAndMessageRequest new
>> + suggestedName: nameString;
>> + initialMessage: msgString;
>> + patchBlock: aPatchBlock
>> + ) signal!
>>
>> Item was changed:
>> ----- Method: MCWorkingCopyBrowser>>saveVersion (in category 'actions') -----
>> saveVersion
>> | repo |
>> self canSave ifFalse: [^self].
>> self checkForNewerVersions ifFalse: [^self].
>> repo := self repository.
>> + (self withRepository: repo do: [workingCopy newVersion]) ifNotNil:
>> - workingCopy newVersion ifNotNil:
>> [:v |
>> (MCVersionInspector new version: v) show.
>> Cursor wait showWhile: [repo storeVersion: v].
>> MCCacheRepository default cacheAllFileNamesDuring:
>> [repo cacheAllFileNamesDuring:
>> [v allAvailableDependenciesDo:
>> [:dep |
>> (repo includesVersionNamed: dep info name)
>> ifFalse: [repo storeVersion: dep]]]]]!
>>
>> Item was added:
>> + ----- Method: MCWorkingCopyBrowser>>withRepository:do: (in category 'actions') -----
>> + withRepository: aRepository do: aBlock
>> + ^aBlock
>> + on: MCRepositoryRequest
>> + do: [:req | req resume: aRepository]!
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 1625 bytes
Desc: Message signed with OpenPGP using GPGMail
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20140903/3e2a38b2/signature.pgp
More information about the Squeak-dev
mailing list
|