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 >>>>>> >>>>>>