On 2011-08-12, Lester Caine <les...@lsces.co.uk> wrote:
> Johannes Schlüter wrote:
> > > > Actually the real question here is WHY create a fork on github
> > > > at all? The copy you are working on LOCALLY is the fork that you
> > > > are developing on? Much of the stuff on github and the other
> > > > DVCS server sites is redundant? You only need to publish your
> > > > local changes to other developers who are working with you not
> > > > to the whole world?
> > since i can publish an experimental feature, get it
> > reviewed/tested/improved before pushing it to the main tree.
> >
> > Mind that "other developers who are working with you" is potentially
> > everybody on this list;-)
>
> But that is the point ... if everybody has their own published
> 'experimental feature' repos, syncing those bits we are playing with
> looks like a nightmare?  Surly the point of DVCS is we share via some
> central pot, and these experimental branches exist there? Having to
> keep track of who's bits you are playing with is the messy bit :( And
> it's that which has caused problems with other projects, where
> 'extensions' have grown in secondary repos ... and become the official
> extension. That is what I think people are just trying to flag up.

Actually, it's not a nightmare; it's incredibly easy, and actually helps
keep features and bugfixes more sandboxed, and thus more easily reviewed
and merged.

As an example, let's say I as a developer want to develop feature Y for
the language. I create a new branch locally, and start developing. As I
near a point where it seems ready, I rebase from the canonical
repository, and check to see if any conflicts occur between my code and
what's come in on the main repo. If all looks good, I ask for review,
and, after a few rounds of back and forth and some coding, again rebase,
and then ask for somebody to merge. The nice part about this is it puts
the onus on the individual developers to ensure they have clean patches
-- if a merge request doesn't apply cleanly, you throw it back and ask
them to submit again when it does.

Now, let's say while I'm working on feature Y, I also tackle issues X,
Z, and A. I do each of these in their own hotfix branches. The nice part
is that there's easy, simple segregation between each fix, and I can
move back and forth between the branches quickly and with no bleed-over.

When it comes to the central repo, you have somebody or a team of people
basically reviewing, merging, and pushing in pull requests. A release
master is "king" or "queen" of a particular release branch, and is the
one who decides if/when a feature is merged to that branch.

The main thing is making it clear who is responsible for merging into a
"master" branch, and who is responsible for merging into a release
branch -- in other words, it comes down to processes. And, frankly, the
processes are not terribly unlike the status quo -- the real question is
what version control system is the best fit for that process. DVCS tools
are (generally) optimized for quick branching, ease of merging, and
minimizing commit size -- all of which could potentially benefit PHP
development.

-- 
Matthew Weier O'Phinney
Project Lead            | matt...@zend.com
Zend Framework          | http://framework.zend.com/
PGP key: http://framework.zend.com/zf-matthew-pgp-key.asc

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to