At work I’m involved with setting up some new infrastructure, and I thought I’d write up what I am finding as well as solicit advice from others. We need what most development shops need, all of it company-wide and cross-platform (Mac, Windows):
Source Control — Git
This is pretty straightforward. We were using Subversion and are moving to Git.
There are other distributed source systems around like
etc. but git is the clear winner in terms of power, extensibility, space and speed.
Source Hosting — Gitorious / GitHub
A little less straightforward. I honestly thought Github was a good choice, but an almost-as-good choice if you want to keep your code inside the company firewall is Gitorious, which is kind of an open-sourced Github that you can deploy for free.Unfortunately, Gitorious is a beast to set up, with its many dependencies, some at specific versions. Fortunately, TurnKeyLinux is on the verge of releasing a Gitorious VM appliancet. I’ve gotten a server running using some pre-release patches (you can see progress on the TurnKey Linux forums).
No clear winner here.
- Bugzilla is a mainstay, but can be a beast to administer.
- Trac has great integration with source and wiki, but is a bit limited.
- Redmine seems ok, but has a very busy interface (all those fields!).
- Mantis isn’t bad.
Every time someone checks code in, a build should kick off.
Additionally, some testing should be done.
If checkins are frequent enough, simple unit test are enough,
with full regression tests saved for the nightly builds.
Ideally, code checked in must be reviewed before it is accepted into the tree.
- Gerrit is often mentioned, but it runs on Java.
- CodeCollab is really good, but commercial.
- Gitorious has a method involving checking code into a temporary branch, which is reviewed and then merged with the trunk/current branch if it passes muster. Haven’t tried this much though.
Having a central wiki, editable by all the developers is essential to a good dev community, even within a company.