My company is redesigning our intranet site and decided to go with DotNetNuke as the solution to implement. Now for the past year I've been trying to drive changes here about keeping development, testing, and production environments separate. I also want all changes that are relevant to the site to go into SVN, this includes data that defines the page and module layout.
Has anyone attempted trying this with dotnetnuke before? And does anyone have any other tips for developing dotnetnuke sites?
Source Control
I recommend using separate projects for DotNetNuke projects (skins, modules, providers), and not checking the actual web site itself into source control environment (DNN Modules would use the WAP style project). Each developer could then have their own DotnetNuke site and database in their development environment. I also don't recommend making changes to DotNetNuke's core so that you have a clean upgrade path. I would recommend using a tool such as Red Gate's SQL Data Compare in order to generate database scripts for your data that you could keep in the source control environment as well.
Here is some more information about setting up a Web Application Project for a DotNetNuke module.
Testing/Staging/Production
Keeping these separate in DotNetNuke is generally very easy because you're already creating modules that plug into a DNN site. My recommendation is to create packaged and properly versioned modules so that you can cleanly install them on test, staging, and production.
Here is some information on using NAnt to automate DNN module packaging.