Hey,

Breaking the ice, by following the logic behind 'Pull' button at 'Working
copy of..." from iceberg repo UI, I found I can put this:

aRemote := IceGitRemote name: 'origin' url: '
https://github.com/User/MyProject.git'.
aRemote localRepository: (IceRepository registry detect: [ :each | each
includesPackageNamed: 'MyProject' ]).
localBranch := IceGitLocalBranch named: 'refs/heads/main' inRepository:
aRemote localRepository.
aRemote fetchBranch: localBranch.
remoteBranch := aRemote remoteBranchNamed: localBranch name ifAbsent: [ ].
aRemote localRepository workingCopy mergeCommit: remoteBranch commit.

under a seaside anchor callback and get the running image self update.

I still have to make it work within docker, but it is a start.

Thanks all
Best

Emilio

On Fri, Apr 29, 2022 at 8:01 PM Dale Henrichs <
dale.henri...@gemtalksystems.com> wrote:

> Emilio,
>
> Okay ... we're peeling the onion :) ...
>
> At this point it sounds like you need to do a flushCache on your filetree
> repository in order to force Metacello to re-download from the github into
> the local package-cache.
>
> But if Iceberg is involved, I am not the person to ask ... I am not
> familiar with the changes that have been made to Metacello to get it to
> work with Iceberg ...
>
> Dale
>
>
>
> On Fri, Apr 29, 2022 at 3:16 PM Emilio Oca <emilio...@gmail.com> wrote:
>
>> Hi Dale
>>
>> Thanks again, still not working.
>> After updating github I am unable to pull the changes into the image.
>> So far the only way is to hit Pull button at the "Working copy of
>> MyProyect" repo window.
>> I wish I could reproduce what that button does.
>>
>> Even this:
>> Metacello new
>>         repository: 'github://...';
>>         baseline: 'MyProyect';
>>         get
>> does not update my file system at iceberg/
>>
>> Best
>>
>> Emilio
>>
>> On Thu, Apr 28, 2022 at 3:29 PM Dale Henrichs <
>> dale.henri...@gemtalksystems.com> wrote:
>>
>>> 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