blob: 767b07bd484c966bd15458dc0eaddefc7d9edf75 [file] [log] [blame] [view]
<!--
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
-->
# Storing Versions
This section describes how we _store_ version numbers on our various repositories.
## Cordova Platform Repositories
There are two aspects of this:
1. Storing the version for the repository
2. Storing the version of the platform of a created project (as created by the `bin/create` script)
For #1:
* We will continue to use a `VERSION` file at the root of the repository.
For #2:
* There is already a way to report the version - through the `cordova/version` script of a created project.
* The logic of this script used to be different across platforms
* The new logic here is to have it echo a hard-coded string, which is the contents of the `VERSION` file at the time of creation.
## Cordova JS
There are two aspects of this:
1. Storing the version for the repository
2. Storing the version for within generated cordova.js files.
For #1:
* We will continue to use a `VERSION` file at the root of the repository.
For #2:
1. Use build-time logic to stamp cordova.js files with a version through a variable at the top of the file.
2. When built in the context of a git repo, and not at a tagged commit, append the git hash.
3. When not in a git repo or at a tagged commit, don't try and append a hash.
## Cordova Plugins
Plugins store their version within their plugin.xml file. No `VERSION` files exist.
## Plugman & CLI
These tools are built as npm modules, and so use package.json. No `VERSION` files exist.
# Choosing Version Numbers Based on Dev vs Release
This section describes how we __choose version numbers for each branch within our various repositories.
## Cordova Platform Repositories
The version number should correspond closely to the git branch. When a release branch is made, both the branch and the master branch should be updated. The master branch should **always** have a version number ending in "-dev", which indicates the version currently being developed. A fresh release branch should change the version to an "-rc1" version, and then change to the unqualified version number when it is released.
(This constant version number can be updated manually, but *should* eventually be updated via coho as release branches are made.)
This should give a rough idea how the version number should advance:
3.3.0-dev
3.2.0-dev|
| |
--A---B---C---D (master)
\
\--E---F---G---H (3.2.x)
| | |
3.2.0-rc1| 3.2.1-rc1
3.2.0
* A: This is on the master branch, after 3.1.x has been branched, as 3.2 is being developed.
* B: This is the branch point for 3.2.x
* C: The first commit after 3.2.x is branched should identify the master branch as 3.3 is being developed on master now.
* E: The first commit on the 3.2.x branch should identify the branch as 3.2.0-rc1
* G: At some point, 3.2.0 is released, and should be identified as such
* H: After 3.2.0 is released, any further development can be called 3.2.1-rc1
Current support:
||'''Platform'''||'''Support'''||
||Android || {*} ||
||BB10 || {o} ||
||iOS || {o} ||
||OSX || {o} ||
||QT || {o} ||
||Tizen || {o} ||
||WebOS || {o} ||
||Win || {o} ||
||WP7 || {o} ||
||WP8 || {o} ||
||www || {o} ||
## Cordova JS
cordova-js follows the same scheme as platforms.
## Cordova Plugins
Current state is that we have master & dev branches. This is because plugman pulls from master by default, so it must remain stable.
1. Versions should stay be suffixed with "-dev" on the dev branch.
2. This means a releases involves:
1. Update plugin.xml's version to "3.1.0" on dev branch
2. Merge dev -> master
3. Update plugin.xml's version to "3.2.0-dev" on dev branch
## Plugman & CLI
cordova-plugman and cordova-cli follow the same scheme as platforms.