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.henrichs@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 emiliooca@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.henrichs@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 emiliooca@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.henrichs@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 estebanlm@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 emiliooca@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 estebanlm@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 emiliooca@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