The git distributed version control system (VCS)

kbahey's picture
Start: 
2010-07-15 19:00 - 21:00 America/New_York
Event type: 
User group meeting

Drupal.org has been using CVS as a version control system (VCS) since the project started.

CVS is not only used for contributors to check in code to their modules, but also is used for the packaging system for Drupal that manages releases. CVS is a centralized VCS, has several drawbacks making it frustrating to work with (e.g. cannot move files, cannot check in empty directories, no merging of code, ...etc), as well as lacking features present by more modern VCS's.

After evaluating centralized vs. distributed VCS's, and then the latter (bazaar, mercurial, git), the Drupal community is migrating from CVS to Git. Git was written by Linus Torvalds and is in use for the Linux kernel itself. The Drupal Association has approved funds to make this happen, and a team lead is now on board. By using a distributed VCS, we get a lot of features that are lacking in CVS, as well as pave the way for new ways of collaboration that will be possible.

Chris Frey will give us an overview of the git VCS. He will take the fear out of git by explaining:
* the low level mechanics
* git's philosophy and workflow
* how to get started with a few basic commands
* how git uses the network
* show some cool things that can be done, to stimulate further pursuit
* where to get more information
* if there's time, how to use git with other SCMs

For those who want to learn more about the specifics of Drupal's move to Git, here are some links:
- Migrating Drupal.org to Git.
- Drupal.org Git Migration Team.
- git phase 2 tag in the issue queue.
- Git Migration Lead job posting.
- An overview of what to expect from the project lead.

Comments

Presentation material

kbahey's picture

Thanks to Chris for a very informative evening about git. Lots of stuff in there was new to me, such as rebase, fsck, and gc.

Here is how you can get access to the presentation (OpenOffice) and the script that Chris ran to show what each command does.

You will need git to check it out ...

http://foursquare.net/cdfrey/blog/archive/2010/07/Video__Intro_to_Git.html

Drupal performance tuning, development, customization and consulting: 2bits.com, Inc..
Personal blog: Baheyeldin.com.

kbahey's picture

Here are links to some of the stuff we discussed last night.

Migrating from SVN to Git

http://www.jonmaddox.com/2008/03/05/cleanly-migrate-your-subversion-repo...
http://stackoverflow.com/questions/79165/how-to-migrate-svn-with-history...
http://unintelligible.org/blog/2008/07/30/migrating-a-subversion-reposit...

Hosting Git Repositories

For hosting your own repositories, there are many options. Here is an overview of the options available.
http://progit.org/book/ch4-0.html

Here is how to run gitweb, so your repository is accessible anonymously (read only) to the world
http://tjworld.net/wiki/Howto/GitPublicRepositoryInstallAndConfigure

There is gitosis, which is OK for general access contol
http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secu...

Gitolite is for granular hosting, with access permissions per branch (e.g. you want developers to access master, but you only want the buildmaster to have access to the stable branches).

http://progit.org/book/ch4-8.html
http://github.com/sitaramc/gitolite

Also, with newer versions, smart HTTP seems to be advancing a lot, and may be poised to be the future protocol.
http://github.com/blog/642-smart-http-support

Drupal performance tuning, development, customization and consulting: 2bits.com, Inc..
Personal blog: Baheyeldin.com.

Video Posted

deviantintegral's picture

I've posted the video up on archive.org.

Unfortunately, the screen capture dropped frames, so it's a bit out of sync in the middle. Next time hopefully the editing process will be more refined :)

Enjoy!