[squeak-dev] The Inbox: Monticello-cmm.1550112371873461.mcz

Chris Muller asqueaker at gmail.com
Thu Feb 14 03:13:17 UTC 2019


What are the two most-important properties we want from our
versionNumber?  Monotonicity and uniqueness.  The current scheme only
provides the former, this uses DateAndTime now utcMicroseconds to
provide the latter, too.  As a bonus it also happens to encode the
save timestamp into the VersionName, so available without having to
open the file.

I admit it looks intimidating given what we're used to seeing, but
what of the added safety and utility?

Best,
  Chris

On Wed, Feb 13, 2019 at 8:56 PM Eliot Miranda <eliot.miranda at gmail.com> wrote:
>
>
>
> On Wed, Feb 13, 2019 at 6:53 PM <commits at source.squeak.org> wrote:
>>
>> Chris Muller uploaded a new version of Monticello to project The Inbox:
>> http://source.squeak.org/inbox/Monticello-cmm.1550112371873461.mcz
>
>
> Whaaaa?!?  :-)  Shurely shome mishtske.  hic.
>
>>
>>
>>
>> ==================== Summary ====================
>>
>> Name: Monticello-cmm.1550112371873461
>> Author: cmm
>> Time: 13 February 2019, 8:53:17.238995 pm
>> UUID: 4e5412b2-6fac-4192-846e-40e4c24eb282
>> Ancestors: Monticello-nice.694
>>
>> Monticello only requires monotonicity and uniqueness for its version numbers, not consecutiveness.
>>
>> =============== Diff against Monticello-nice.694 ===============
>>
>> Item was added:
>> + ----- Method: MCAncestry>>hasAncestorNamed: (in category 'ancestry') -----
>> + hasAncestorNamed: aString
>> +       self allAncestorsDo:
>> +               [ : each | aString asMCVersionName = each name ifTrue: [ ^ true ] ].
>> +       ^ false!
>>
>> Item was changed:
>>   MCPackageManager subclass: #MCWorkingCopy
>> +       instanceVariableNames: 'versionInfo ancestry repositoryGroup requiredPackages environment'
>> -       instanceVariableNames: 'versionInfo ancestry counter repositoryGroup requiredPackages environment'
>>         classVariableNames: ''
>>         poolDictionaries: ''
>>         category: 'Monticello-Versioning'!
>>
>> Item was changed:
>>   ----- Method: MCWorkingCopy>>nextVersionName (in category 'private') -----
>>   nextVersionName
>>         | branch oldName |
>>         ancestry ancestors isEmpty
>>                 ifTrue:
>> +                       [ branch := package name ]
>> -                       [ counter ifNil: [ counter := 0 ].
>> -                       branch := package name ]
>>                 ifFalse:
>>                         [ oldName := ancestry ancestors first versionName.
>> +                       branch := oldName packageAndBranchName ].
>> +       ^ branch , '-' , Utilities authorInitials , '.' , DateAndTime now utcMicroseconds asString!
>> -                       branch := oldName packageAndBranchName.
>> -                       counter ifNil:
>> -                               [ counter := (ancestry ancestors detectMax:
>> -                                       [ : eachVersionInfo | eachVersionInfo versionNumber ])
>> -                                       ifNil: [ 0 ]
>> -                                       ifNotNil:
>> -                                               [ : highestNumbered | highestNumbered versionNumber ] ] ].
>> -       counter := counter + 1.
>> -       ^ branch , '-' , Utilities authorInitials , '.' , counter asString!
>>
>> Item was changed:
>>   ----- Method: MCWorkingCopy>>uniqueVersionName (in category 'private') -----
>>   uniqueVersionName
>>         |versionName|
>> -       counter := nil.
>>         [versionName := self nextVersionName.
>> +       (self repositoryGroup includesVersionNamed: versionName) or: [ ancestry hasAncestorNamed: versionName ]] whileTrue.
>> -       self repositoryGroup includesVersionNamed: versionName] whileTrue.
>>         ^ versionName!
>>
>>
>
>
> --
> _,,,^..^,,,_
> best, Eliot
>


More information about the Squeak-dev mailing list