- # git merge (which performs a fast forward)
- # - merge could fail (race); that's /really/ dangerous.
- sh.call("git", "pull", temp_wc_dir, "master")
- # run update script
- sh.call(".scripts/update")
+ with util.IgnoreKeyboardInterrupts():
+ with util.LockDirectory(".scripts-upgrade-lock"):
+ # git merge (which performs a fast forward)
+ sh.call("git", "pull", "-q", temp_wc_dir, "master")
+ version_obj = distutils.version.LooseVersion(version.partition('-')[2])
+ try:
+ # run update script
+ d.upgrade(version_obj, options)
+ d.verifyWeb()
+ except app.UpgradeFailure:
+ logging.warning("Upgrade failed: rolling back")
+ perform_restore(d, backup)
+ raise
+ except deploy.WebVerificationError as e:
+ logging.warning("Web verification failed: rolling back")
+ logging.info("Web page that was output was:\n\n%s" % e.contents)
+ perform_restore(d, backup)
+ raise app.UpgradeVerificationFailure("Upgrade caused website to become inaccessible; site was rolled back")