Difference between revisions of "Development and Release Process"

From D Wiki
Jump to: navigation, search
(Update bash snippets, change master to stagging.)
(Preparing the next release.)
Line 11: Line 11:
 
== Release a new version of D ==
 
== Release a new version of D ==
  
The stagging branch in git contains a version in stabilization. This version will be the next release of D. When it is judged stabilized enough to be released, a branch is created for this new release. The name of the branch is D2.N+1, where N is the previous version of D2 .
+
The staging branch in git contains a version in stabilization. This version will be the next release of D. When it is judged stabilized enough to be released, a branch is created for this new release. The name of the branch is D2.N+1, where N is the previous version of D2 .
  
<source lang="bash">git checkout stagging
+
<source lang="bash">git checkout staging
 
git branch 2.N+1
 
git branch 2.N+1
 
git checkout 2.N+1</source>
 
git checkout 2.N+1</source>
Line 22: Line 22:
  
 
Packaging is done as usual based on the content of the tag.
 
Packaging is done as usual based on the content of the tag.
 +
 +
Now that the release is done, we must prepare for the next release ! The current dev version, which is in master branch will be merged into staging to be stabilized.
 +
 +
<source lang="bash">git checkout staging
 +
git merge master</source>
 +
 +
''Should we rebase here ? It make the branch tree more simple, but is more painful''
 +
 +
At this point, staging receive bug fixes and the cycle start again.
  
 
== Release a revision of a released version of D ==
 
== Release a revision of a released version of D ==

Revision as of 21:58, 13 December 2012

This page is intended to serve as a working paper to capture the essential aspects of a current discussion on the D forum concerning an improved D development and release process. As such, it should not be taken as official (until approved by Andrei), but it is to serve as a centralized location for the current proposal, so that the details won't be scattered throughout multiple disjoint forum messages and ultimately lost in the mists of time.

To keep things civil, the convention is that if something on this page doesn't match how you understand it should be, you should start a discussion on the talk page before making the change.

Goals

  • To provide D users with a stable version of D that receives only critical bugfixes, that they can build on
  • To provide a place for adequate testing of new features before they are officially included in D
  • To allow the D developers to continue to develop the language without being hampered by the fear of breaking large amounts of existing code

Release a new version of D

The staging branch in git contains a version in stabilization. This version will be the next release of D. When it is judged stabilized enough to be released, a branch is created for this new release. The name of the branch is D2.N+1, where N is the previous version of D2 .

git checkout staging
git branch 2.N+1
git checkout 2.N+1

Then, a tag is created.

git tag 2.N+1.0

Packaging is done as usual based on the content of the tag.

Now that the release is done, we must prepare for the next release ! The current dev version, which is in master branch will be merged into staging to be stabilized.

git checkout staging
git merge master

Should we rebase here ? It make the branch tree more simple, but is more painful

At this point, staging receive bug fixes and the cycle start again.

Release a revision of a released version of D

A revision can be published on an already released version of D. Revision include bug fixes, but no new feature. We supposed bug fixes has been included into branch 2.N where N is the released version of D we want to update. M is the last revision number that have been published.

git checkout 2.N
git tag 2.N.M+1

Packaging is done as usual based on the content of the tag.