On Jan 24, 2008, at 1:49 AM, Rick McGuire wrote:
David Jencks wrote:
The specs tree seems to be in a mess with stuff in branches and
waay too much stuff in trunk, and many trunk poms having a xxx-
SNAPSHOT version where the latest tag is xxx.
I've attempted to document our previous decisions on spec
development and release in specs/branches/README:
WARNING
DO NOT DEVELOP ANY SPECS UNDER BRANCHES OR COPY ANY VERSIONS INTO
BRANCHES
ALL DEVELOPMENT MUST TAKE PLACE UNDER TRUNK
ANY CODE UNDER BRANCHES IS AN ERROR AND SHOULD BE CLEANED UP AS
SOON AS POSSIBLE
and specs/trunk/README.txt:
Structure
========
Only specs under active development should be in trunk. Once you
release, delete the trunk. If you need to make a change or
bugfix, copy the latest tag into trunk and work with that.
Be certain that all dependencies are marked "provided"
Do not copy any code into branches under any circumstances.
I'm not sure I agree with this. The documented procedures for
releasing involves moving the trunk version into branches using the
eventual final release name. Once moved, the poms are updated to
remove the -SNAPSHOT and the release candidates are built. Any
changes resulting from the voting process get made in the branch,
and only once the release vote has passed is the branched moved
into the tag.
I do like that aspect of the process, since it allows you to see at
a glance what stage you're in. The other principles I agree with.
All development should take place in trunk. No changes should be
made to any files once it is tags. Branches should be reserved
just for that transitional zone between termination of active
development and finalization of the release.
I guess I need to re-read the documentation for how to do a release,
but I think it's wrong. In particular I thought what we voted on had
to be built from a tag, not something in branches or trunk. I
thought if a release vote failed we deleted the tag.
For the specs at least, which we release individually, there is no
point in copying anything to branches. The release plugin can create
the tag directly from trunk just fine and much better than I could by
hand. When it constructs the release artifacts it checks out from
the tag it created.
So, I don't see the point in branches unless we are actually going to
branch or need to do manual cleanup before a release (such as with
all of geronimo at present.... an unfortunate situation)
thanks
david jencks
Rick
Building
========
The is normally no root pom, so you need to build specs individually.
To build you will need:
* J2SE SDK 1.5+ (http://java.sun.com/j2se/1.4.2)
* Maven 2.0.7+ (http://maven.apache.org)
To build all changes incrementally:
mvn install
To perform clean builds, which are sometimes needed after some
changes to the
source tree:
mvn clean install
Releasing
=========
Use the maven-release-plugin.
Stage to your people.apache.org account or to your local machine
and scp to people.apache.org.
After a release vote has passed use the maven-stage-plugin to
transfer the voted artifacts to the apache release repo.
-----------------------------------
Please review, fix, and if you think this isn't what we agreed on
complain.
thanks
david jencks