So I have a Configuration in the Meta repo of pharo 4 and 3 that loads the latest version of my project Ephestos.
However I have moved my development to github since I am very happy with the workflow and since I discovered loading github repos via a baseline I have little use for smalltalkhub. So my plan is this, keep the configuration in the meta repo so people and me can install my project easily with one click via the wonderful simple configuration browser , but I dont want anymore to load any versions with it. Instead I want to tell the configuration "load the github baseline" which means it will fetch the code from my github account master branch which is the stable branch anyway (and the only branch so far) . That will allow me to never have to update that configuration again since it will just load the latest code from github repo. The question is how to do this the easiest and cleanest way possible ? |
Hi Kilon, a simple way to do that is to change your configuration so that it uses the baseline in your github. The SmaCC configuration for Pharo 4.0 is written in this way for the stable version.version204: spec <version: '2.0.4' imports: #('2.0-baseline')> spec for: #'pharo4.x' do: [ spec blessing: #stable; author: 'ThierryGoubier'; description: 'SmaCC Smalltalk Compiler Compiler for Pharo 4.0'. spec baseline: 'SmaCC' with: [ spec repository: 'github://ThierryGoubier/SmaCC:master' ]; import: 'SmaCC' ] 2015-01-27 10:08 GMT+01:00 kilon alios <[hidden email]>:
|
beautiful it worked like a charm following your instructions , I now can brake my project to smaller ones, each one with each own github repo and use Baselines to load each one and still allow the user to load my Project in one single click from Configuration Browser. Love it how Pharo make this all this so easy, with python it was a nightmare. Brilliant just Brilliant ! :) On Tue, Jan 27, 2015 at 11:19 AM, Thierry Goubier <[hidden email]> wrote:
|
Kilon,
One more point that you might find useful ... If you use tags (i.e., v1.0.0, v1.0.1, v1.1.0), you can specify tag wildcards in the branch field of the github repository description. Using Thierry's example the following resolves the latest commit on the master branch (bleeding edge): github://ThierryGoubier/SmaCC:master Using a tag name, you can match the tagged commit: github://ThierryGoubier/SmaCC:v1.0.0 github://ThierryGoubier/SmaCC:v1.1.0 Using a tag wildcard you can specify the latest tag 1.0.*: github://ThierryGoubier/SmaCC:v1.0.* which matches v1.0.1, v1.0.2, whichever is latest, but not v1.0.2.1. To match the latest tag in the 1.0 family use 1.0.?: github://ThierryGoubier/SmaCC:v1.0.? which matches v1.0.1, v1.0.2 and v1.0.2.1. There are more examples here[1]. This feature was introduced in Metacello 1.0.0-beta.32.16[2]. Dale [1] https://github.com/dalehenrich/metacello-work/issues/277#issuecomment-58970696 [2] https://github.com/dalehenrich/metacello-work/issues?q=milestone%3A1.0.0-beta.32.16+is%3Aclosed On 1/27/15 1:52 AM, kilon alios wrote:
|
Hi Dale, The wildcards on tags, are they available on branch names as well?i.e. ? matches less than * in both cases. In Metacello, it is the reverse: 1.0.? matches more labels than 1.0.* Thierry 2015-01-27 15:57 GMT+01:00 Dale Henrichs <[hidden email]>:
|
In reply to this post by Dale Henrichs-3
No I have not used git tags so far, so I am not familiar with them. But I will keep in mind, I am considering not having versions at all, I find it a curious concept. Dale there is one thing I wanted to ask you , would it possible put in my github repo installation instructions for installing prerequisites ? For example I may use Thierry's SmaCC which I currently study to figure out how it works. I could add that to my ConfigurationOfEphestos that I have saved to Meta Repo of Pharo 4. But I dont want to touch that repo, ideally I would like to do this from the BaselineOfEphestos which is stored in my Ephestos github repo. Is that possible ? Can the baseline handle installation of dependencies and trigger other configurations ? Or is that a job only for Configurations ? I want not to have to maintain also meta repo 4, I just want to only to do all things in my github repo. On Tue, Jan 27, 2015 at 4:57 PM, Dale Henrichs <[hidden email]> wrote:
|
In reply to this post by Thierry Goubier
On 1/27/15 7:10 AM, Thierry Goubier wrote: > Hi Dale, > > The wildcards on tags, are they available on branch names as well? The wildcards are only applied to tags ... branch names are not expected to look like version numbers with `.` and `-` separated "possibly numeric" fields. > > I wonder about the choice for ? and *, because: > > - In RE(s), ? is 0 or 1 occurence, * is 0 or any number of occurences. > - In shells (bash?), ? is any one character, * is 0 or any number of > characters. > > i.e. ? matches less than * in both cases. In Metacello, it is the > reverse: 1.0.? matches more labels than 1.0.* I based my sytax on String>>match:. String>>match: uses `*` for "any sequence of characters" and `#` for "any character" which is different that RE and shell matching syntax ... `?` was unused so I picked it for "match this and subsequent fields". I'm open to suggestions for alternatives to the `?`:) Dale |
In reply to this post by kilon.alios
Kilon,
I don't use tags a lot in my own projects, but if someone is using your project in a production situation, then using tags is a good idea (if you follow semantic versioning) so that the users can tell when and if you have made api-breaking changes... Since the Smacc project looks like it is on github you have two options for doing a "project reference": reference the configuration or reference the baseline. To reference a configuration-based project do something like the following (in a baseline): spec configuration: 'SmaCC' with: [ spec versionString: '2.0.4'; repository: '<a class="moz-txt-link-freetext" href="http://">http://.....' ]. spec package: 'PackageThatDependsUponSmacc' with: [ spec requires: #('Smacc') ]. Note that you might want to use a symbolic version (if they are defined in the project) so that you can always get the #stable version which presumably changes over time ... To reference a baseline-based project do something like the following (in a baseline): spec baseline: 'SmaCC' with: [ spec repository: 'github://ThierryGoubier/SmaCC:master' ]. spec package: 'PackageThatDependsUponSmacc' with: [ spec requires: #('Smacc') ] Note that you can use the tag wild cards to achieve a similar effect of using symbolic versions with configurations. Did this answer your question? Dale On 01/27/2015 07:21 AM, kilon alios
wrote:
|
I love your answers they are straight to the point, easy to understand and very useful, this one is no different, thank you :) I have another questions but I will make a separate thread for it so its easier for users to google and search for it, including me . By the way the official docs are only here ? --> https://github.com/dalehenrich/metacello-work/tree/master/docs On Tue, Jan 27, 2015 at 8:37 PM, Dale Henrichs <[hidden email]> wrote:
|
Free forum by Nabble | Edit this page |