====== Upgrading Drupal (zip file method) ======
These instructions are specific to when you have a live site, a development machine, and both are set up for git push/pull
===== running update.php =====
Several places below reference running update.php. This means going to your yoursite.com/update.php after logging in as an administrator. If you are unable to log in, you can force access to update.php by editing the settings.php file in drupal/sites/yoursite/settings.php and set the following line to true (don't forget to change it back after updates are complete)
$update_free_access = FALSE;
change to:
$update_free_access = TRUE;
===== Initial prep on dev machine =====
* dev machine must connect to its own database, and not the live site database
* working copy must be clean (no outstanding changes)
* sync both your dev drupal database and all files with the live site, if you haven't already
===== Prep for Core updates on dev machine =====
* follow [[#Initial prep on dev machine]] above
* download latest drupal core zip file to dev machine and extract
* put your dev machine working copy drupal in maintenance mode by logging in (STAY LOGGED IN FOR THE FOLLOWING STEPS)
* in your working copy drupal, delete all files and folders inside drupal **EXCEPT** for .git and sites/
* copy all files from extracted drupal core **EXCEPT** sites/ folder into your working copy where you just deleted some
* fix .htaccess, .gitignore, and any other files modified by us in Core (you should be using git to track things like this)
* go back to the drupal administration pages on your dev machine and run update.php
* if no errors are detected, continue testing your site to make sure everything in your site AND with your modules are still working
* if everything is ok, make a git commit with all changes for Core updates (you can start a new branch if you prefer)
===== Prep for Module updates on dev machines =====
* follow [[#Initial prep on dev machine]] above
* you can either manually download and replace module files or use the Update module for some, if they support it
* after updating desired modules, run update.php
* if no errors are detected, continue testing your site to make sure everything in your site AND with your modules are still working
* if everything is ok, make a git commit with all changes for Module updates (you can start a new branch if you prefer)
===== Updating the live site =====
* perform each of the above sections first
* **for all sites ran by this drupal instance**, backup database and drupal directories, including sites directory
* make sure dev machine git commits have been pushed to shared repo
* log into live site and place it in maintenance mode
* pull git changes from shared repo
* run update.php
* take site out of maintenance mode
* flush all caches just for good measure