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: '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:
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 <dale.henri...@gemtalksystems.com <mailto:dale.henri...@gemtalksystems.com>> 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:
    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
    <thierry.goub...@gmail.com <mailto:thierry.goub...@gmail.com>> wrote:

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

        Thierry



        2015-01-27 10:08 GMT+01:00 kilon alios <kilon.al...@gmail.com
        <mailto:kilon.al...@gmail.com>>:

            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 ?






Reply via email to