[Glass] Failing to add a valid project entry in GsDevKit_home

Dale Henrichs via Glass glass at lists.gemtalksystems.com
Fri Dec 22 09:18:04 PST 2017

On 12/22/17 5:10 AM, Mariano Martinez Peck wrote:
> Hi Dale,
> What I am trying to do is.... right now the configuration of my 
> application does reference git based projects via github url. This was 
> OK (even if not ideal) until I reached ZipArchive error of the other 
> day. So... I am trying to migrate to an approach like this:
> 1) Clone repositories to local machine (I am trying to do this via 
> Iceberg in dev and via GsDevKit_home / tODE on production)
> 2) Do a metacello load pointing to the local filestree and then lock
Okay so the project isn't loaded yet ... I guess that is true because of 
the ZipArchive problem ...
> With that in mind, for the GemStone side what I am trying is:
> a) Put .ston files for each of the projects  I refer that are in Git 
> (Seaside, HighcartsSt, etc) in to `/sys/local/server/projects` *(is 
> this the recommended place????)*.
Certainly ... the rule would be that if you have projects that are to be 
shared amongst a collection of stones, then use 
`/sys/local/server/projects` ... the only time to use the 
`/sys/stone/projects` is when you want to do work on a branch that is 
explicitly not shared ... I use this approach when I doing work on 
Metacello that is likely to break Metacello while I am working on it -- 
I cannot afford to break Metacello for all of the other stones:)
> That way, each new server will get all needed .ston as they are 
> sincronized together with my sys local project.
> b) do a `project install` ,  `project load` and `project lock` of 
> those projects.
> Does this make sense?
Yes it does!
> Well, I thought it had. But... I just tried `project clone` and it 
> seems it ALSO downloads a the zip tarball using ZipArchive. Damn it. I 
> thought you were were using git (via FFI, or performOnServer or 
> whatever) underneath for making the clone...
Yes, I think this bit is a bit inadvertant, but without the ZipArchive 
bug is certainly an annoyance at most ... with the bug this is a problem 
--- but it should be easy to work around this ...simply define the 
project entry to use the github:// and the master branch (which 
downloads correctly) and do your `project clone` - no lock in project 
entry... another alternative is to manually clone the repo into 
$GS_HOME/shared/repos and thenn define the project entry referencing the 
filetree:// url for the repo - use a lock now ... and then you're ready 
to rumba ...
> So what are the alternatives?  if I remove the `--https` and I change 
> the url to be the git / ssh keys , would that avoid doing a zipball 
> download?  I ask before starting to deal with the keys etc..
The simplest is to clone the repository manually and then create the 
project entry and just avoid the whole ZipArchive bug completely ... The 
ony reason that all of the examples use github:// urls is a) I didn't 
really realize that the project entry would automactically do the 
download and b) I didn't know about the ZipArchive bug that could get in 
the way ...
> If not, then the only way I find is to make the clone myself, using 
> git. But then, the project entry makes almost no sense, I cannot use 
> `project clone` etc etc.
The project entry is used as a specification for other stones that are 
created in the $GS_HOME env ... so you don't have to "teach" each knew 
stone where all of the local clones for projects are located ...

I am patiently waiting to see if the pharo folks see the advantage of 
having these disk-based artifacts, but I may have to retire before that 
happens:) ...

For 3.5 we should have Cypress2 (called Rowan now) and Metacello in the 
base along with selected bits of tODE tools api as we have a few of our 
commercial customers who are becoming interested in using git for 
managing the GemStone source ... so it is likely that I will revisit the 
project entry implementation and probably come up with a Metacello Load 
Specification which will be similar to project entries, with some tweaks 
and changes based on my/our experiences so far ...

For 3.5 I plan to move towards using GsDevKit/GsDevKit[1], 
SeasideSt/Grease[2] and Metacello/metacello[3] instead of glassdb/glass, 
GsDevKit/Grease and dalehenrich/metacello-work ... and that is going to 
push the limits of what can be done with the single 
$GS_HOME/shared/repos and $GS_HOME/sys/local/server/projects directory 
structure. The methods and classes themselves have not changed (that 
much)between projects,  but the fact that they are independent git 
projects (some with the same name) and the fact that I don't want to 
force any existing stones to have to switch projects makes it a bit of a 
challenge ...

So things are constantly being refined as  time goes by and the 
requirements/experiences change.


[1] https://github.com/GsDevKit/GsDevKit
[2] https://github.com/SeasideSt/Grease
[3] https://github.com/Metacello/metacello
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gemtalksystems.com/mailman/private/glass/attachments/20171222/3f8c1eba/attachment.html>

More information about the Glass mailing list