#summary Commands to produce a new release.

= Commands to produce new releases =

* Note: These command sequences are not scripts.

* Note: These command sequences are intended to be performed manually while being aware of what is happening and noticing errors and adjusting appropriately.*

* Note: Ensure you're using appropriate versions of JDK.


<wiki:toc max_depth="3" />


=== Create release branch ===
{{{
BRANCH=v4.0.x

# Make sure local code is up-to-date
git checkout master
git pull

# Create branch
git checkout -b $BRANCH
# Push branch for others to see
git push -u origin $BRANCH

#### In other local clones (optional) ####
# Get new branch
git fetch
# Create a local branch that pulls/pushes to origin/$BRANCH
git branch $BRANCH origin/$BRANCH
}}}

=== Tag version ===
{{{
VERSION=0.90

cd pre-existing-plexi/
git checkout origin/master # the commit we are going to tag
git tag -a v$VERSION -m "Version $VERSION"
git push --tags
}}}

=== Build RC of library ===
{{{
cd ~
git clone https://code.google.com/p/plexi/
cd plexi
git checkout v$VERSION
ant -Dadaptorlib.suffix=-$VERSION dist
}}}

=== Extract documentation zip from full distribution zip ===
{{{
cd dist
unzip adaptor-$VERSION-bin.zip adaptor-$VERSION-docs.zip
}}}

=== Update online documentation ===
{{{
cd ~
git clone https://code.google.com/p/plexi.documentation/
cd plexi.documentation
rm -r *
mkdir javadoc && cd javadoc
unzip ~/plexi/dist/adaptor-$VERSION-docs.zip
git add -A
git commit -m "Update for version $VERSION"
git tag -a v$VERSION -m "Version $VERSION"
git push --tags origin master

# Update "External links" to point to new documentation.
# Update main page to point to new release.
}}}

=== Build RC of adaptor ===
{{{
VERSION=0.90

# Tag version

# Have adaptor library
# eg: cd ~/plexi/dist
# unzip adaptor-$VERSION-bin.zip adaptor-$VERSION-withlib.jar

# Build adaptor from fresh clone
cd ~
git clone https://code.google.com/p/plexi.repo/
cd plexi.repo
git checkout v$VERSION
cp ../plexi/dist/adaptor-$VERSION-withlib.jar lib/
ant -Dadaptor.suffix=-$VERSION -Dadaptor.jar=lib/adaptor-$VERSION-withlib.jar dist

# Give to QA
}}}


<wiki:comment>
Scratch pad
{{{
git checkout v4.0.x
git merge $sha1beginning # for fstfwd
git cherrypick master # commit to add
git cherry v4.0.x # information to cmp checkout to this one
    # '+' we have it; target doesn't
    # '-' we both have it
git push v4.0.x:4.0.x # refspec example
git checkout -b mybranchname
git merge
git branch -D mybranch
git checkout master^^^^^
</wiki:comment>