Emilio,

I wasn't quite sure whether or not you were concerned about having the
BaselineOf refreshed or a reload of the packages managed by the BaselineOf
and as Gabriel mentions, the missing #projectClass method is the most
common problem ...

By default Metacello does not refresh a BaselieOf in your image if it is
already present, however, you can force a refresh of a BaselineOf by using
the the Metcello #get command:

> Metacello new baseline:'MyProject';
>   repository: 'github://myUser/MyProject:main/myProject';
>   get;
>   load.

This would be a good pattern to follow when reloading projects after
updating from github ... and I am a bit surprised that this question is not
asked more often :)

Dale

On Mon, Apr 25, 2022 at 6:06 PM Emilio Oca <emilio...@gmail.com> wrote:

> Hi Gabriel, Dale!
>
> My BaselineOf had only #baseline:
> Added #projectClass
> But is still not working.
> It seems to be doing the load, but not the pull before the load.
>
> I had implemented no more than #baseLine: and now projectClass.
>
> If I go through the UI and do the pull it works perfectly.
> Can I replicate that with a script?
>
> Best
>
> Emilio
>
> On Mon, Apr 25, 2022 at 6:49 PM Dale Henrichs <
> dale.henri...@gemtalksystems.com> wrote:
>
>> Emilio,
>>
>> Are you using a repository without Monticello meta data? If so, then you
>> need to change the #projectClass of you your baseline to:
>>
>>> projectClass
>>>   Smalltalk at: #'MetacelloCypressBaselineProject' ifPresent: [ :cl | ^
>>> cl ].
>>>   ^ super projectClass
>>
>>
>> unless the #projectClass is MetacelloCypressBaselineProject, Metacello
>> will think that your package versions are 'cypress.1' and Metacello will
>> not load packages with the same version .... when the #projectClass is
>> MetacelloCypressBaselineProject, Metacello will always load the package and
>> let Monticello filter out the changes ...
>>
>> Dale
>>
>> On Mon, Apr 25, 2022 at 2:39 PM Esteban Lorenzano <esteba...@netc.eu>
>> wrote:
>>
>>> mmm, you may be having another problem elsewhere, because what I typed
>>> should be working (is how we enforce the load of new versions to run the
>>> tests, for example).
>>>
>>> Esteban
>>>
>>> On Apr 25 2022, at 11:30 pm, Emilio Oca <emilio...@gmail.com> wrote:
>>>
>>> Hi Esteban
>>>
>>> Thanks for the hint.
>>> It is still not working.
>>> Even if I remove BaselineOfMyProject and MyProject.
>>> When it reloads, it doesn't loads the last version of head at github but
>>> the one that was already at the image.
>>>
>>> I just want to update up to what is at gibhub head. Is there another way?
>>>
>>> Best
>>>
>>> Emilio
>>>
>>> On Sat, Apr 23, 2022 at 1:56 AM Esteban Lorenzano <esteba...@netc.eu>
>>> wrote:
>>>
>>> Hi Emilio,
>>>
>>> You need something like this:
>>>
>>>   Metacello new
>>>         repository: 'github://pharo-spec/Spec:Pharo10';
>>>         baseline: 'Spec2';
>>>         onConflict: [ :e | e useIncoming ];
>>>         onUpgrade: [ :e | e useIncoming ];
>>>         ignoreImage;
>>>         load
>>>
>>> ignoreImage, onConflict, onUpgrade.
>>>
>>> BUT if your image already has a baseline for your project then Metacello
>>> will not reload it (hence your project may not be loaded correctly, since
>>> baseline may have changed).
>>>
>>> In that case, I always execute before something like:
>>>
>>> #( 'BaselineOfSpec2' 'BaselineOfSpecCore' ) do: [ :each |
>>>     (RPackageOrganizer default packageNamed: each ifAbsent: [ nil ])
>>>             ifNotNil: [ :aPackage | aPackage removeFromSystem ] ]
>>>
>>>
>>> I ack this is hacky, but it works :)
>>>
>>> Esteban
>>>
>>> On Apr 23 2022, at 3:21 am, Emilio Oca <emilio...@gmail.com> wrote:
>>>
>>> Hi List
>>>
>>> I need some help with Metacello, and may be git too
>>>
>>> I would like to be able to, in a running headless image, load the last
>>> commit of a git repo
>>>
>>> Something like
>>> Metacello new baseline:'MyProject';
>>> repository: 'github://myUser/MyProject:main/myProject';
>>> load.
>>> works just once and may open some dialogs
>>>
>>> Something like this
>>> [
>>> [
>>> Metacello new baseline:'MyProject';
>>> repository: 'github://myUser/MyProject:main/myProject';
>>> onConflictUseIncoming;
>>> load.
>>> ] on: MetacelloSkipDirtyPackageLoad do: [ :ex | ex resume: false ].
>>> ] on: MCMergeOrLoadWarning do: [ :ex | ex load ].
>>> Avoids the dialogs and alerts but the code is still not updated.
>>>
>>> My intention is to be able to 'refresh' a running seaside image with its
>>> latest development version from a git repo (avoiding to personally reach
>>> the server and rebuild the docker image)
>>> What am I missing?
>>>
>>> Best
>>>
>>> Emilio
>>>
>>>

Reply via email to