Next focus: PROCESS

deadalnix deadalnix at gmail.com
Wed Dec 12 12:13:59 PST 2012


Let me do some proposal. If people are happy with them, I can 
start some wikification.

First here are the branch already existing :

dev : development branch. It is used to merge new features.
master : is the branch where the next version is stabilized 
(right now, 2.061). It receive only bug fix. eventually new 
features if the feature is of strategic importance.
2.60 : contains the current released version of D + bug fix.

Release process :

When branch 2.60 have enoug bug fixes to justify a new release, a 
tag is created (2.60.N+1). The amount and the importance of 
corrected bugs will dictate when the release is done?

When master is stabilized enough, a new version of D can be 
released. A new branch s created from master, named 2.61 and a 
tag 2.61.0 is created :

git checkout master
git branch 2.61
git checkout 2.61
git tag 2.61.0

Then, the dev version is merged into master and a new 
stabilization process begin :
git checkout master
git merge dev

At some point, 2.60 will not receive any more bug fix, and will 
be considered very stable, or dead, depending on one's standard 
(both are kind of the same).

I advice against maintaining a log of 2.XXX branches, as too much 
choice is as bad as no choice for the user, and it is no better 
for us. 2 is IMO the right amount.

NB: I have chosen the 3 number system for branches names, this is 
up to debate, but as it is widely used in programming languages 
it is a good base. Anyway, let's not debate the name for too 
long, as it really don't matter, and concentrate on the workflow.

On Wednesday, 12 December 2012 at 16:14:44 UTC, Andrei 
Alexandrescu wrote:
> Beyond that we need to have a wiki page with workflows:
>
> "To initiate a new feature"
>

A new feature is developed in its own branch. The reference is 
the dev branch. In git it goes as follow :

git checkout dev
git branch featureName

Development of the feature.

You can work on many feature at the same time; each one in its 
own branch. You initiate them the same way and switch from one 
another with git checkout.

Before submitting a feature, it has to be reabsed as follow :

git checkout featureName
git rebase dev

When the feature is ready to inclusion into dev, the dev can make 
a pull request.

> "To initiate a bug fix"
>

The same as for new feature, except that you start from the 
branch the bug is in. If the bug is in several branches, then the 
most stable one is choosen, as i is usually easier to bubble up 
the bugfix from a stable branch to dev than the other way around.

> "To initiate a library addition without formal review"
>
> "To initiate a library addition with formal review"
>
> ...
>

I don't really know what to do here. I guess bug fixes on the 
library can be done the same way, but something specific probably 
have to be done with new modules.

> All of these should be subsections in the documentation.
>
> "If your branch has conflicts"
>

If your branch has conflict, it is up to you to resolve them. The 
conflict will most likely occurs when rebasing. In such case, git 
status will inform you on which files are impacted. Edit the file 
to resolve the conflict and do git add file, then git rebase 
--continue .

If you don't want to resolve the conflict now, you can abort the 
rebase by doing git rebase --abort

> "If your branch became really messed up"
>

Well this one is difficult, because it is unclear what is wrong, 
so unclear ho to solve it.

Is that good ?


More information about the Digitalmars-d mailing list