I'm grappling with some of the choices surrounding integration versions.
One assumption I want to make is that non-integration versions—versions that
represent releases—do not have any special suffixes. So I would release
version 2.0 of something rather than 2.0-FINAL or 2.0-RELEASE or something
like that.
I do want to use a special suffix to represent integration versions. One
combination that makes sense to me is -DEV and -CI. It seems that I should
specify something like the following in my Ivy settings:
<latest-revision name="mylatest-revision"
usedefaultspecialmeanings="false">
<specialMeaning name="CI" value="-2"/>
<specialMeaning name="DEV" value="-1"/>
</latest-revision>
Does this look right? Notice no hyphen prefix. And as long I'm mentioning
the suffixes -DEV and -CI, anyone care to suggest a better suffix or
combination? Of course there's always -SNAPSHOT.
Now suppose I want to do prolific versioning where each integration version
gets its own timestamp. It seems like overkill to do prolific versioning on
publishes on a developer machine. Only for the CI server do I only want to
produce a unique, timestamped version on each publish. So I want to have the
ordering from newest to oldest go something like:
1. 2.1-DEV on developer machine
2. 2.1-CI-201008221522 on CI-published repository
3. 2.1-CI-201008220801 on CI-published repository
4. 2.1-CI-201008201948 on CI-published repository
5. 2.0 on release repository
Do these look like reasonable conventions, or could someone recommend a
better convention for producing a unique version from each successful CI
build?
If these conventions do look reasonable, how do I incorporate the extra
timestamp suffix into my latest-revision latest-strategy in Ivy settings to
ensure that CI versions get ordered by timestamp but still get treated as
older than DEV and release builds?
P.S. I need to go back over some old ivy-user threads on this topic.