The latest issue of Computing in Science & Engineering has a good article by Yann Pouillon, Jean-Michel Beuken, Thierry Deutsch, Marc Torrent, and Xavier Gonze titled "Organizing Software Growth and Distributed Development: the Case of Abinit" (unfortunately behind a pay wall). It describes the infrastructure and practices used to manage Abinit, a half-million line open-source program. It's a lot more engineering than most teams need, but it provides a lot of insight into what small projects might grow into. If anyone would like to do a similar paper about what a smaller-scale team uses, it would be a welcome counterpoint.
Originally posted at Software Carpentry.