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

Reply via email to