BaselineOf vs ConfigurationOf

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

BaselineOf vs ConfigurationOf

Peter Uhnak
Hi,

can anybody tell me the difference between BaselineOfX and ConfigurationOfX? The only thing I've gathered is that BaselineOf is used for Git projects, while ConfigurationOf for Monticello projects; but usage-wise they seem identical.

Thanks,
Peter
Reply | Threaded
Open this post in threaded view
|

Re: BaselineOf vs ConfigurationOf

Damien Pollet-2
Thierry or Dale will confirm, but basically that's the gist of it.

For git projects, you can specify dependencies to all things that refer to commits in git. So you can depend on a particular commit, on a tag, the tip of a branch… Therefore the release/version management part of metacello in ConfigurationOf… becomes mostly irrelevant, since you can encode it in how you organize and use your git repo.

On 25 February 2015 at 13:47, Peter Uhnák <[hidden email]> wrote:
Hi,

can anybody tell me the difference between BaselineOfX and ConfigurationOfX? The only thing I've gathered is that BaselineOf is used for Git projects, while ConfigurationOf for Monticello projects; but usage-wise they seem identical.

Thanks,
Peter

Reply | Threaded
Open this post in threaded view
|

Re: BaselineOf vs ConfigurationOf

Thierry Goubier
I'm sure Dale will precise this, but...

BaselineOf is the same as a #baseline: in a ConfigurationOf. It describes dependencies, packages and groups for a project, without versions. On loading, a BaselineOf will behave as a #development version in a ConfigurationOf which is to load the latest versions of the packages listed (and whatever dependencies listed).

BaselineOf becomes very convenient when you combine that with a repository which understand branches, such as git. Then, you say which branch or release tag you want through the repository url, say it's a baseline, and, et voilà, you have it (it loads the latest version on that branch or tag).

Repositories urls which support branches and tags are github:// and bitbucket:// urls; which support branches (and not tags) are gitfiletree:// urls.

Really, really makes things a lot easier than configurations. Took me a while to start using it, now, can't do without. These days, I'm just using Metacello scripts to load stuff out of baselines instead of configurations for allmost all my stuff.

Thierry

2015-02-25 15:25 GMT+01:00 Damien Pollet <[hidden email]>:
Thierry or Dale will confirm, but basically that's the gist of it.

For git projects, you can specify dependencies to all things that refer to commits in git. So you can depend on a particular commit, on a tag, the tip of a branch… Therefore the release/version management part of metacello in ConfigurationOf… becomes mostly irrelevant, since you can encode it in how you organize and use your git repo.

On 25 February 2015 at 13:47, Peter Uhnák <[hidden email]> wrote:
Hi,

can anybody tell me the difference between BaselineOfX and ConfigurationOfX? The only thing I've gathered is that BaselineOf is used for Git projects, while ConfigurationOf for Monticello projects; but usage-wise they seem identical.

Thanks,
Peter


Reply | Threaded
Open this post in threaded view
|

Re: BaselineOf vs ConfigurationOf

Martin Bähr
Excerpts from Thierry Goubier's message of 2015-02-25 15:43:39 +0100:
> BaselineOf is the same as a #baseline: in a ConfigurationOf. It describes
> dependencies, packages and groups for a project, without versions. On
> loading, a BaselineOf will behave as a #development version in a
> ConfigurationOf which is to load the latest versions of the packages listed
> (and whatever dependencies listed).

sounds to me like one should use branches for baseline (since they update)
and tags for versions in configuration (since they stay on the same commit)

> Repositories urls which support branches and tags are github:// and
> bitbucket:// urls; which support branches (and not tags) are gitfiletree://
> urls.

oh, any particular reason, or just work in progress?

greetings, martin.

--
eKita                   -   the online platform for your entire academic life
--
chief engineer                                                       eKita.co
pike programmer      pike.lysator.liu.se    caudium.net     societyserver.org
secretary                                                      beijinglug.org
mentor                                                           fossasia.org
foresight developer  foresightlinux.org                            realss.com
unix sysadmin
Martin Bähr          working in china        http://societyserver.org/mbaehr/

Reply | Threaded
Open this post in threaded view
|

Re: BaselineOf vs ConfigurationOf

Ben Coman
Just a random query (especially since I haven't played with BaselineOf and I might misunderstand something)... 
should #baseline: be moved out of the ConfigurationOf class so that we consistently have a BaselineOf class in both cases: git & monticello.   

That is, the ConfigurationOfXxx.mcz package will contain two classes: ConfigurationOfXxx and BaselineOfXxx.

cheers -ben

On Wed, Feb 25, 2015 at 11:05 PM, Martin Bähr <[hidden email]> wrote:
Excerpts from Thierry Goubier's message of 2015-02-25 15:43:39 +0100:
> BaselineOf is the same as a #baseline: in a ConfigurationOf. It describes
> dependencies, packages and groups for a project, without versions. On
> loading, a BaselineOf will behave as a #development version in a
> ConfigurationOf which is to load the latest versions of the packages listed
> (and whatever dependencies listed).

sounds to me like one should use branches for baseline (since they update)
and tags for versions in configuration (since they stay on the same commit)

> Repositories urls which support branches and tags are github:// and
> bitbucket:// urls; which support branches (and not tags) are gitfiletree://
> urls.

oh, any particular reason, or just work in progress?

greetings, martin.

--
eKita                   -   the online platform for your entire academic life
--
chief engineer                                                       eKita.co
pike programmer      pike.lysator.liu.se    caudium.net     societyserver.org
secretary                                                      beijinglug.org
mentor                                                           fossasia.org
foresight developer  foresightlinux.org                            realss.com
unix sysadmin
Martin Bähr          working in china        http://societyserver.org/mbaehr/


Reply | Threaded
Open this post in threaded view
|

Re: BaselineOf vs ConfigurationOf

Thierry Goubier


2015-02-26 13:41 GMT+01:00 Ben Coman <[hidden email]>:
Just a random query (especially since I haven't played with BaselineOf and I might misunderstand something)... 
should #baseline: be moved out of the ConfigurationOf class so that we consistently have a BaselineOf class in both cases: git & monticello.

There is some elegance in having the same scheme, yes.
 

That is, the ConfigurationOfXxx.mcz package will contain two classes: ConfigurationOfXxx and BaselineOfXxx.

Hum, I'm not sure it will work. I'm under the feeling that Metacello expects the baseline to be in a package of the same name (BaselineOf) and that it wouldn't work.

Dale?

Thierry
 

cheers -ben

On Wed, Feb 25, 2015 at 11:05 PM, Martin Bähr <[hidden email]> wrote:
Excerpts from Thierry Goubier's message of 2015-02-25 15:43:39 +0100:
> BaselineOf is the same as a #baseline: in a ConfigurationOf. It describes
> dependencies, packages and groups for a project, without versions. On
> loading, a BaselineOf will behave as a #development version in a
> ConfigurationOf which is to load the latest versions of the packages listed
> (and whatever dependencies listed).

sounds to me like one should use branches for baseline (since they update)
and tags for versions in configuration (since they stay on the same commit)

> Repositories urls which support branches and tags are github:// and
> bitbucket:// urls; which support branches (and not tags) are gitfiletree://
> urls.

oh, any particular reason, or just work in progress?

greetings, martin.

--
eKita                   -   the online platform for your entire academic life
--
chief engineer                                                       eKita.co
pike programmer      pike.lysator.liu.se    caudium.net     societyserver.org
secretary                                                      beijinglug.org
mentor                                                           fossasia.org
foresight developer  foresightlinux.org                            realss.com
unix sysadmin
Martin Bähr          working in china        http://societyserver.org/mbaehr/



Reply | Threaded
Open this post in threaded view
|

Re: BaselineOf vs ConfigurationOf

Dale Henrichs-3
In reply to this post by Martin Bähr
Martin,

In my work I am moving entirely away from ConfigurationOf ...
ConfigurationOf was invented because Monticello lacks the ability to
reason about multi-file versions so virtually all of the meta data in a
ConfigurationOf is making up for this lack. Of course, the
ConfigurationOf only partially fills the gap ...

Git handles multi-file versions as well as branches so all of the extra
meta data in the ConfigurationOf is totally unnecessary once you start
using git.

The BaselineOf manages the meta data that is still required in the
presence of git:
   - package load order
   - project dependencies

One can use tags directly in a project reference so configurations can
be completely eliminated.

Dale
On 2/25/15 7:05 AM, Martin Bähr wrote:

> Excerpts from Thierry Goubier's message of 2015-02-25 15:43:39 +0100:
>> BaselineOf is the same as a #baseline: in a ConfigurationOf. It describes
>> dependencies, packages and groups for a project, without versions. On
>> loading, a BaselineOf will behave as a #development version in a
>> ConfigurationOf which is to load the latest versions of the packages listed
>> (and whatever dependencies listed).
> sounds to me like one should use branches for baseline (since they update)
> and tags for versions in configuration (since they stay on the same commit)
>
>> Repositories urls which support branches and tags are github:// and
>> bitbucket:// urls; which support branches (and not tags) are gitfiletree://
>> urls.
> oh, any particular reason, or just work in progress?
>
> greetings, martin.
>


Reply | Threaded
Open this post in threaded view
|

Re: BaselineOf vs ConfigurationOf

Dale Henrichs-3
In reply to this post by Ben Coman

On 2/26/15 4:41 AM, Ben Coman wrote:
> Just a random query (especially since I haven't played with BaselineOf
> and I might misunderstand something)...
> should #baseline: be moved out of the ConfigurationOf class so that we
> consistently have a BaselineOf class in both cases: git & monticello.
Haha, you are misunderstanding ... the two classes are separate because
they are independent classes. One should use one or the other for
managing a project.

If you have a git-based project then I recommend that you use a
BaselineOf to manage the packages and dependent projects.

If you are using a Monticello repository (mcz files) then you must use a
ConfigurationOf ...
>
> That is, the ConfigurationOfXxx.mcz package will contain two classes:
> ConfigurationOfXxx and BaselineOfXxx.
>
This will not work as you expect:)

Dale

Reply | Threaded
Open this post in threaded view
|

Re: BaselineOf vs ConfigurationOf

Peter Uhnak
Thank you!
If the BaselineOf is independent maybe we could repurpose Versioner - because even if tags and branches are handled by git, the load order and dependencies are still required and doing that by hand is too much work. :)

Also maybe the docs (which I found just now… so shame on me for not looking harder) should be updated to recommend people to use BaselineOf always https://github.com/dalehenrich/metacello-work/tree/master/docs

Peter

On Thu, Feb 26, 2015 at 8:23 PM, Dale Henrichs <[hidden email]> wrote:

On 2/26/15 4:41 AM, Ben Coman wrote:
Just a random query (especially since I haven't played with BaselineOf and I might misunderstand something)...
should #baseline: be moved out of the ConfigurationOf class so that we consistently have a BaselineOf class in both cases: git & monticello.
Haha, you are misunderstanding ... the two classes are separate because they are independent classes. One should use one or the other for managing a project.

If you have a git-based project then I recommend that you use a BaselineOf to manage the packages and dependent projects.

If you are using a Monticello repository (mcz files) then you must use a ConfigurationOf ...

That is, the ConfigurationOfXxx.mcz package will contain two classes: ConfigurationOfXxx and BaselineOfXxx.

This will not work as you expect:)

Dale