Thinking again about the dev process specifically in Moose (not
subprojects such as CAnalyzer, Mondrian...), branches for developer
should be 'nano' releases actually, that is:
- 4 is a major release of Moose
- 4.1 is a minor release, but still something consistent
- 4.2.x should be for release in the main trunk, i.e. mostly dev and
beta version before releasing a minor release (would be 4.2)
- 4.2.x.y is a branch of one developer (something short-lived,
typically for a task resolution, once finished should be merged in
main trunk)
We could also follow the linux rule:
- 4.1, 4.1.1, 4.1.1.1 are the dev versions for the future 4.2 stable
releases
- 4.2, 4.2.1 etc are minor and micro releases but stable, with bug fixes
i.e. minor is odd -> dev version, minor is even -> stable version
This does not mean we work on two versions in parallel (we dont have
the manpower), but it just to help distinguish between dev and stable
versions
I'm just pushing ideas out of my head. Now, with this process, we have
three main requirements for Moose:
- making it easy for anybody to retrieve (and identify it) the latest
stable version
- making integration in the main dev trunk the priority (we have
limited resources, so each developer should take care to merge its
changes in the main trunk, and start over from the main trunk for a
new task, NOT always working in the same branches)
- managing micro/nano releases from each developer
I'm sorry if this feels too complicated and overly complex, it is not.
I'm just playing with different schemas and see what could work best.
-----------------------------------------------------------------------------------------------------------------------------
Now of course Metacello should not care about conventions (minor,
micro...) of each project. Your proposition seems reasonable and
flexible enough.
But then, how can I ask for a version with a specific blessing?
On 4 déc. 2009, at 18:48, Dale Henrichs wrote:
Thinking off the top of my head, would it be work to supply a
pattern of some sort as an arg? Something like:
ConfigurationOfXXX project lastVersion: '*.*'
Not a real regex (because of the periods would need to be escaped,
but mainly because reading regex for me is like trying to read
russian:).
Maybe best is a special purpose character like '#' in addition to
the standard(?) smalltalk patterns '*' and '?':
ConfigurationOfXXX project lastVersion: '#.#' ---> matches all
major.minor
ConfigurationOfXXX project lastVersion: '1.#' ---> matches all
1.minor
ConfigurationOfXXX project lastVersion: '*' ---> is current
algorithm
ConfigurationOfXXX project lastVersion: '*.0' ---> matches
versions with trailing .0
ConfigurationOfXXX project lastVersion: '?.#' ---> matches single
character major.minor
I dont see what is the use of this one?
ConfigurationOfXXX project lastVersion:
'1.#.3' ---> is invalid
This one seems to the right approach ... I can add a #match: method
to MetacelloVersionNumber to implement the pattern matching.
What do you think?
Dale
----- "Simon Denier" <Simon.Denier(a)inria.fr> wrote:
| Suppose I have versions like this:
| 1.3.2 #development --> branch by a developer
| 1.3.1 #development --> branch by a developer
| 1.3 #development --> main trunk, last dev
| 1.2 #stable --> main trunk, last stable
|
| When I perform a ConfigurationOfXXX project lastVersion, I would
like
|
| to retrieve the config for the last dev version common to everybody,
|
| and I would like this to be 1.3, not 1.3.2 which is the work of one
| guy not yet merged in the main trunk.
|
| Right now, I get 1.3.2
|
| Perhaps we could have something like this:
| 1.3.2 #branch --> branch by a developer
| 1.3.1 #branch --> branch by a developer
| 1.3 #development --> main trunk, last dev
| 1.2 #stable --> main trunk, last stable
|
| and branch would be an 'unstable' tag ignored by the loader when
| asking for latestVersion or lastVersion (and veryLastVersion could
| retrieve the latest version, be it a branch, dev, or stable).
|
| I have no special requirements here, I'm just playing with the idea
| and process of how to manage micro releases with Metacello.
|
| --
| Simon
--
Simon