On 19/05/2011 23:31, Peter Kümmel wrote:
On 19.05.2011 14:55, Vincent van Ravesteijn wrote:
On 19-5-2011 14:04, Richard Heck wrote:
On 05/19/2011 03:03 AM, Vincent van Ravesteijn wrote:


     about the model so even my dumb brain
     gets it. it was written that only maintainer is expected to
     determine whats go
     into-stable trunk and what does not and that we will benefit from
     better review
     model so i naturally wonder what does it mean.


It means exactly what it says. The maintainer will decide when to move a feature into trunk-stable. In the meantime a feature can mature until it's
really finished and/or doesn't introduce bugs.

For what it's worth, my sense is that your idea is that there should be
two things that both, in some way, correspond to current trunk. Let's
call them trunk-devel and trunk-stable.

(i) trunk-devel is actually more like current trunk. People would be
asked to develop stuff in a gitbranch, but they would be free to merge
their changes into trunk-devel when they thought they were ready, much
as we do now. This is what the adventurous would be encouraged to use
for testing.

(ii) trunk-stable is really what's new; changes only go into
trunk-stable when the maintainer is convinced they are fully cooked. One
could think of trunk-stable as intended always to be rc-quality, so
that, if we decided to release next month, the only question would be:
what is there in trunk-devel could be gotten ready by then? People who
want or need access to new features could use trunk-stable without any
real fear of instability, including instability from massive refactorings.

The reason to develop features, etc, in gitbranches is that it makes
maintaining this kind of set-up much easier.

I think when it's put that way, it seems sensible. Am I missing something?

You're exactly right!

I thought I did put it that way ;). But writing prose isn't my strongest
point apparently.


I also haven't understood it right before Rich explanation (but I did not read all messages)

But this way of branching looks good to me: I simply work on a feature branch, commit to this branch and then push to master (like committing to trunk). The when the feature is ready it is already in master (because I already have push to master after each commit)

You of course shouldn't push to master initially. The logical step by step procedure is this:

1) You create a _local_ feature branch

git checkout -bkuemmel/my-new-feature


2) You develop _locally_ by committing into your feature branch.

<develop>
git commit -a
<develop some more>
git commit -a
...

3) When you think you are ready to publicize, you can now push your feature branch to a new _remote_ branch that will track your local branch:

git push kuemmel/my-new-feature

Before doing that you are of course free (and encouraged) to cleanup the local history of your branch. Note that this does not mean that your feature is ready, only that you want to let others know about what you are doing and maybe get some help. This is basically the same as sending a patch to the list for comments.

4) some other people might join in the development of your feature so be sure to pull the branch periodically:

git pull kuemmel/my-new-feature

5) develop some more, commit some more, push some more, etc

6) You feature now deserves a broader visibility, it is time to merge it into trunk-devel. But first merge it locally and make sure everything is OK and up to date

git checkout trunk-devel
git pull
git merge kuemmel/my-new-feature
<fix everything that needs to be fixed>
git push trunk-devel

7) Your receive a lot of feedback so you want to develop some more -> go back to step 2

8) Your feature is ready and stable -> ask Vincent to merge it into trunk-stable

but not in
the stable branch, where is is selected by Vincent.

But a question remains: Could I pull from master (with all the other unfinished features) after I've started my feature branch, wouldn't this pollute my branch with the other
features and making the push to stable impossible?

You always develop within_your_ branch, not within master (will would be trunk-devel in our case); so there should be no pollution at all! Conflicts are fixed at merge time, not during development.

Abdel.


Reply via email to