svn + redmine + hudson + ant
Вот такая комбинация получилась :)
Весь код коммитится в SVN, при этом каждый коммит относится к определенной задаче в Redmine.
По мере тестирования и закрытия задач, с помощью Hudson (Jenkins) и ant-a делается сборка, и накатывается на предпродакт. А оттуда уже, в случае успеха, на продакт. Каждая версия (сборка) содержит diff, с помощью которого можно накатить/откатить патч.
Схема сложная, но она работает. До этого был полный бардак.