I have been developing an existing Magento (1.9) site.
My current approach is to make a clone of the Magento files and DB, configure the clone to use the new DB and change the base URLS of the site to dev.example.com. I then develop on the clone with the reassurance that I will not bring the live site down during plugin installs, new store creation or other development activities (see below).
During the development period all kinds has happened including the following:
- Updates to mage core 1.9.1 to 1.9.2 for example.
- Updates to existing plugins.
- New plugins.
- Changes to template files.
- New Stores created (Multi-Store).
- New Themes installed.
- Updates to CMS.
- Test purchases.
- New test dummy user account.
- New customer accounts and orders are migrated over from a non-magento store
Meanwhile, on the other side of the server, current live site has been:
- Taking orders
- Taking payment transaction infomation.
- New customers have made accounts and signed up for newsletters.
- The clients have made new blog posts and updated/added cms pages.
And this works all fine n dandy until its time (normally a few weeks down the road) to make the shiny development site live with all the changes brought together in one harmonious Magento.
My last experience of merging the data was unbelievably painful with the following issues experienced:-
- my staging instance complaining of foreign key errors and other DB related issues.
- incorrect records assigned to customers
- replication of data
- store views becoming muddled
- transaction data missing
Magento's built in import/export tools were handy but also became a double edged sword as customers order history isn't a consideration with these built-in tools leading to all sorts of DB errors and mismatched data.
3rd party plugins to bring over order history made a bad situation worse as they would not bring across data I would expect to come across. Transaction information or Shipments for example.
My experience was pretty stressful and I'm not looking for a resolution for any particular issue (they're all solved now) but rather asking .... is there anyway to make the process less prone to error?
Are there any holistic tools / environment / methodology out there that can help in this situation without needing a Magento tool box of plugins or scripts that require updating / maintenance ?
Is my approach wrong?
Resources on the subject are pretty sparse given the popularity of Magento, which surprises me.