[squeak-dev] The Inbox: Monticello-bf.540.mcz

Frank Shearar frank.shearar at gmail.com
Fri May 3 10:26:02 UTC 2013


Ah, thanks for that, Bert.

IIRC the search over the repository group in #parentSnapshot ought to
search the default cache repository first, yes?

As a side note, we use delimited dynamic variables [1] a fair bit
(MCRepositoryRequest in this case). I wrote the Control package to
formalise this idiom. But it's quite an expensive technique, using a
"deep binding" in Henry Baker's terminology [2]. But I don't _think_
we can use shallow binding without VM support...? (Because doing so
means associating variable->value bindings with ContextParts, and
ContextParts are pretty special.)

[1] http://www.lshift.net/blog/2012/06/27/resumable-exceptions-can-macro-express-delimited-dynamic-variables
[2] http://www.pipeline.com/~hbaker1/ShallowBinding.html

On 3 May 2013 11:17, Bert Freudenberg <bert at freudenbergs.de> wrote:
> If you're wondering, most of the original diff comes from merging the latest MC improvements. Below is an edited version showing actual changes vs. Monticello-bf.532.
>
> - Bert -
>
> Bert Freudenberg uploaded a new version of Monticello to project The Inbox:
> http://source.squeak.org/inbox/Monticello-bf.540.mcz
>
> ==================== Summary ====================
>
> Name: Monticello-bf.540
> Author: bf
> Time: 3 May 2013, 12:06:01.01 pm
> UUID: 759525eb-5ca8-4ab2-9e4a-bddc7d0680dc
> Ancestors: Monticello-bf.532, Monticello-fbs.539
>
> This is my allow-partial-commits mod, improved to always diff to the target repository, and merged with the latest fbs.359 trunk version.
>
> =============== Diff against Monticello-bf.532 ===============
>
> Item was added:
> + Notification subclass: #MCRepositoryRequest
> +       instanceVariableNames: ''
> +       classVariableNames: ''
> +       poolDictionaries: ''
> +       category: 'Monticello-UI'!
>
> Item was changed:
>  ----- Method: MCSaveVersionDialog>>defaultExtent (in category 'as yet unclassified') -----
>  defaultExtent
> +       ^ 600 at 600!
> -       ^ 400 at 300!
>
>
> Item was changed:
>  ----- 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!
> -       ^ self findSnapshotWithVersionInfo: (self ancestors
> -               ifEmpty: [nil]
> -               ifNotEmpty: [self ancestors first])!
>
> 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]!
>
>
>
>


More information about the Squeak-dev mailing list