• I have been searching for a way to sync production sites with a development sites by pulling and pushing data from one site to the other while not overwriting required changes on the site receiving data.

    For example if I have a live site accepting user signups, posts, comments, images etc and a development site, I can pull data down and make both the same, then make changes to the dev site but when I go to push the changes back up to the productiion site I would end up overwrite any addtional changes made on the live site while working on the dev site.

    Generally I use Duplicator to move sites from place to place.
    I also recently found WP Migrate DB Pro however as with the duplicator this also overwrites data on the receiving site.

    While both of these plugins are awesome, they don’t do what I for one would really like to find and use. Any info on this subject in the forum etc appears to be well outdated.

    If there is a way to accomplish what I have described above please fill me in on what I am missing and direct me to the solution.

    It doesn’t have to be a plugin, however it would be rather awesome if it was.

    How does wordpress.org and wordpress.com manage this sort of thing?

    Surely there is a way without manually going through massive databases to compare data etc.

    Thanks

Viewing 5 replies - 1 through 5 (of 5 total)
  • I haven’t seen anything that cna do this either, so I don’t think that there’s much that can do that at this stage.

    The biggest problem is the settings in the database. Just how do you decide what values on the target server are meant to be saved, and what are meant to be discarded? That’s why it’s so hard to do this the right way.

    Things like SVN, GIT, etc that work great with the files, but they don’t work with databases. I have seen some products that claim to work with SQL and databases, but none that I’ve tried really seem to work the right way.

    Thread Starter doubledworks

    (@doubledworks)

    Yes from what I can see the database is the main issue.

    It seems crazy if there is no solution. Surely this has to be one to manage any live site if you test build on a dev/staging site.

    Is this specifically a wordpress issue or are other cms sites like drupal, jamola and the like in the same boat?

    I cant see how sites like wordpress.com and wordpress.org could possibly survive without some sort of solution.

    I cant get my head around there being no solution. Surely there has to be something?

    Anyone have a solution? Anyone working on a solution?

    Well, to be honest, no, it’s not as big a deal as you would believe.

    The reason for this is that data in the database should be separate. Files, sure they can be synchronised, and even data table structure, but data should stay separate because it’s just too easy to break something in production if you go messing around with things.

    As an example, think of this scenario…

    You add a new post in your live site, and you add a new different post on your development site. Now, sync them. BUT… which post is the right one? They both have the same ID number, and they are both valid on their own site, but what should the system do? Should it dump both as they don’t match? Dump one, and if so which one? Dump none and add both to the live site, remembering that you might also want to delete a post one day so you can’t do that as well? Throw an error?

    There’s way too many things that can go wrong with these sorts of things. It’s almost impossible to tell a computer the right rules for ever situation, and that’s why it hasn’t been done before anywhere.

    Thread Starter doubledworks

    (@doubledworks)

    I know what you’re saying. I realize the files are or at least can be a separate issue. I completely get that there is an ID issue with merging. What about with this sync example though?

    I am likely missing some aspects required here because I don’t write software and this is a very simple explanation of what would be required in reality however what I was thinking is firstly that, if the site pulling and pushing data was known to the software / plugin via a setting as the DEV and or production site and providing content is only pulled from the production site to the DEV site and then inserted deleted etc to the production site, it may help.

    So first off you would pull the production site to the DEV in its entirety. (WP Migrate DB pro or duplicator etc can do this job well already.)

    Then if there was a date range setting (IE from what ever day the data was pulled down (until the data insert, delete etc date) in the plugin / software allowing the complete exclusion of data outside of the set date range, while data inside the range is compared by date, ID and GUID, content, revision, etc and based on where it exists at the time. IE DEV or production.

    Whether the content differs by ID/GUID and or content and providing its the latest revision only, that data could perhaps be stored to a file that you can later run to insert the new data which is not currently in the production site. So you would also exclude new data already in the production site from being inserted as its not required because it already exist.

    At this point like any data inserted into the database, it could generate a new ID/GUID and maybe even time and date stamp.

    This way if another entry has been added to the production site using the same ID or GUID as the entry coming from the DEV site it could be altered by ID etc to work in with the production site, as these entries haven’t been accessed/used by RSS etc yet as they are coming from DEV so it doesn’t matter if the ID changes. Well not to my knowledge anyway.

    So in other words, you cant duplicate and confuse entries by ID because the database would just create the next sequential ID number upon each row being inserted.

    Therefore deleted posts on the DEV site could also be deleted on the production site because the data and IDs no longer exists on the DEV site and as it compares all data between the date range and its only designed to push from DEV up (not push from Production down) so it could safely assume it was removed and introduce a delete string to remove it from the production site.

    Of course the production site would potentially need to be in maintenance/unavailable for a short period when you do this so no new data is entered during the process but it wouldn’t need to be offline while building and testing the DEV site, just while doing the final insert etc and test to make sure it all works. So maybe an hour or something as oppose to days or more.

    Just a thought. I have no doubt it would requires some magical coding but I would like to think someone could make this concept work or something like it, if it isn’t already out there somewhere.

    ———

    So how is one suppose to get updates from a DEV site into the production site without overwriting the changes made to the production site, while building and testing the DEV site. Do you have to manually finding and re-enter each new row? Surely there is some easy way of doing this if it isn’t such a big deal?

    Please explain how its not a big deal. I’m very keen to know how to do this and where to look to understand how its done without breaking stuff.

    I still believe there has to be some sort of solution for this. Surely it would be impossible to manage a big site without some sort of solution?

    Have you guys seen this yet: https://ithemes.com/2015/05/05/how-to-set-up-a-wordpress-staging-site-with-backupbuddy-deployment/

    it’s a new feature of Backupbuddy for deployment.

    FYI – I’m not affiliated with the Backupbuddy people.

Viewing 5 replies - 1 through 5 (of 5 total)
  • The topic ‘Pull Push Sync WordPress’ is closed to new replies.