My experience is with Magento V1. I don' know how much has changed in V2.
I have been using a SVN method of keeping our live site up to date for about a year now.
I have a separate URL for the staging (testing) site where I can make changes without affecting customers. Once I'm happy with the changes I run a svn commit
command on the staging directory. I then go over to the live directory and run svn update
to bring all the changes across.
Depending on how you're running PHP on your server you can run into permissions problems because SVN sets them wrong after pulling the changes.
I have a script that I run after the svn update
command that changes the permissions of the new/updated files to the correct owner etc.
As far as databases are concerned, unless a developer makes any changes manually to the database structure you'll find if you pull entire extensions across with a svn update
command they will automatically run their install/update scripts once you access your site so any database structure changes will happen just like as if you'd used Magento Connect to install them.
This still means that if you go into your backend on the staging site and change configuration, add products, customers, pages or anything that they will NOT be included in your svn checkout
or svn update
as they are stored in the database, not the filesystem (which is what SVN is handling.)
I have a script to copy my live site database into my staging site, which I do every so often just to keep the settings in sync. Never try to go the other way or you risk losing customers/orders/etc that were done on the live site. If you need changes that are database related to be sync'd to your live site you'll want to go into the backend of the live site and mimic those changes yourself.
If you're installing on to a different server for your staging site (or for whatever reason you want to do a svn checkout), make sure your database name, database username and password, and the store url and filesystem directory are all matching. If they aren't, the store won't run once you copy the database across to the new location.
If you can't make them all match, I have a script I run on the staging site that just opens the database and changes all the stored URLs/Directories to be correct for the staging site server.
If you want any of these scripts, or if I can help any further let me know.