A product is being developed and delivered as features rather than releases, meaning on completion of a feature, it's pushed to staging and then to production. There can be multiple features in development and overlapping the delivery timeline. So, at any point of time the dev database and source control has more than one feature in development. When a feature is completed, i would like to push only the feature specific code and db changes to staging. This process is proving to be error prone and time consuming for the reasons:
The dev environment comprises of SQL Server 2008, .NET, Entity Framework with SVN for source control.
The term feature here is not related to FDD Agile Model.
Has anyone been through a similar experience?
Many thanks!
I manage a project that works very similar to what you've just described.
Get SVN and CruiseControl.NET setup as soon as you can. It's a life/time savor
I currently have my team working out of branches in SVN and merge into trunk then tag when ready for production.
Keep your database under version control and associate verion numbers to tags (releases)
I derivded my own DB versioning methods based from this great article that suggests creating some tables/constraints/triggers to help version control your DB.
Versioning your database is the hardest part. Before we developed a strict routine for modifying the DB everything was a nightmare
obviously there isn't enough space to explain the full details but I went from spending my entire days managing/merging code to now just checking in on the automated builds for peace of mind and have time to contribute to the project.