On 08/07/2011 04:24 PM, Stas Malyshev wrote:
Hi!
As somebody that have seen reasonably big project switch from SVN to
git and worked quite actively with git since then, I think describing
my experience might be useful for those that never tried it.
1. git is much better than svn especially as applied to complex
projects with multiple participants which need to accept outside
patches, maintain multiple branches and port fixes between branches.
You never know how much you needed cheap branching/merging until you
worked with it some.
2. Switching from svn to git requires one to undergo some mental
shift, and for the first couple of weeks you may be confused and
somewhat frustrated by too many things that look like but not exactly
like the old system. It would appear too complex and unnecessarily
complicating workflows. However, as you develop new routines, you'll
find out how it makes sense and will become more effective than with
svn. Note that git IS much more complex conceptually than SVN and
allows to do much more crazy things - including rewriting history in
all kinds of weird ways - so while I don't think I had to ask SVN
question in forums for years - I still have to google "how to do this
in git" and ask around for some of the more complex things. I think
it's still worth it. Don't know if it makes me a fanboy :)
3. Having system like github around it adds a lot - maintaining
multiple repositories, forks and pull requests is a real boon. I'm not
sure if it would make sense for php, all things considered, but there
are very significant benefits of using such a system where many
workflows are already built-in.
Please note that it's not "hg vs git" argument as I know very little
about hg and have no experience working with it, but I've read what
people write about it and I'm sure many of git's strengths are present
in hg too. I hope somebody with experience in hg (or both, even
better) will voice in.
Drupal completed a move from CVS to Git earlier this year, and our
experience was similar. There is a mental shift from a centralized VCS
to Git, and that is not a small one, but once it's made there is simply
no going back. Pretty much everyone agrees that moving to Git was one
of the best things we've done in a long time, and not just because we
all hated CVS. :-)
A previous poster claimed that a DVCS would lead to confusion as to what
the canonical repository was. That is, in my experience, a common fear
of someone who has not used a DVCS in production. I know, I used to
have the same concern about Git before I actually got to use it. Once I
got my hands dirty with it, however, I understood what everyone was so
excited about. Git is such an amazingly more productive way to work,
the documentation is superb, and the workflow so much saner. It's the
first VCS I've used where I actually "get" what is going on internally.
A DVCS, properly managed, does not encourage confusion over forks. If
anything, if properly used it makes it easier for forks to come back
into the fold later if all parties agree to do so. It's really all a win.
Our Windows-based developers also have not really had an issue. :-)
--Larry Garfield
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php