-
Notifications
You must be signed in to change notification settings - Fork 18
Branches and Versions
At any given time, the pub team is in one of two modes:
- Normal mode
- Code freeze
Code freeze only occurs starting shortly before and continuing until shortly after a major release that will give pub.dartlang.org a user spike. It gives us a chance to make sure any changes to the site have been more heavily user-tested before a wider audience hits them. Whenever possible, though, we prefer to be in normal mode.
The master branch is the bleeding edge for the site. Pull requests are merged into master. Any development occurring outside of master should happen in a branch that will eventually end up merged into master.
The stable branch only exists during code freeze. Its existence determines whether or not a code freeze is active. When it exists, commits from master will be cherry-picked into it as needed. Once code freeze is lifted, the branch will be removed.
Feature branches can be freely created. All new work happens in feature branches which are then merged into master after code review. Feature branches may be long or short-lived.
The main rule here is you must not update the current version. If the current version on AppEngine is 123
, then you cannot directly upload to 123
. Doing so would mean you can't rollback to the previous version.
The current AppEngine version (i.e. the one that pub.dartlang.org resolves to) will always be a monotonically increasing number. Every time we want to push a new live version of the site, we:
- Upload from
master
(orstable
if in code freeze) to the next integer version number. - Go to App Engine Console to determine the current version.
- From the command line:
appcfg.py --oauth2 update -V NEXT_VERSION_NUMBER app
- Test.
- Make it the current version.
- Clean up any unneeded old versions. Keep around at least the previous one, and maybe a couple more if they've been revving frequently. Basically, if you think there's a chance we may want to revert the site to it, keep it around.
This always corresponds to the latest code on master
, even during a code freeze. It should always be safe to upload from master
to the preview version on AppEngine (though it isn't required to do so on every commit to master).
Just like preview. The only difference is that this hits the staging data.