docs: def deploy_sandbox_shared_setup(verbose=True, app=None, web_procs=1):
      """Set up Git, push to Heroku, and launch the app."""
      if verbose:
          out = None
      else:
          out = open(os.devnull, 'w')
  
      (id, tmp) = setup_experiment(debug=False, verbose=verbose, app=app)
  
      # Log in to Heroku if we aren't already.
      log("Making sure that you are logged in to Heroku.")
      ensure_heroku_logged_in()
  
      # Change to temporary directory.
      cwd = os.getcwd()
      os.chdir(tmp)
  
      # Commit Heroku-specific files to tmp folder's git repo.
      cmds = ["git init",
              "git add --all",
              'git commit -m "Experiment ' + id + '"']
      for cmd in cmds:
          subprocess.call(cmd, stdout=out, shell=True)
          time.sleep(0.5)
  
      # Load psiTurk configuration.
      config = PsiturkConfig()
      config.load_config()
  
      # Initialize the app on Heroku.
      log("Initializing app on Heroku...")
      subprocess.call(
          "heroku apps:create " + id +
          " --buildpack https://github.com/thenovices/heroku-buildpack-scipy",
          stdout=out,
          shell=True)
  
      database_size = config.get('Database Parameters', 'database_size')
  
      try:
          if config.getboolean('Easter eggs', 'whimsical'):
              whimsical = "true"
          else:
              whimsical = "false"
      except:
          whimsical = "false"
  
      # Set up postgres database and AWS/psiTurk environment variables.
      cmds = [
          "heroku addons:create heroku-postgresql:{}".format(database_size),
  
          "heroku pg:wait",
  
          "heroku addons:create rediscloud:250",
  
          "heroku addons:create papertrail",
  
          "heroku config:set HOST=" +
          id + ".herokuapp.com",
  
          "heroku config:set aws_access_key_id=" +
          config.get('AWS Access', 'aws_access_key_id'),
  
          "heroku config:set aws_secret_access_key=" +
          config.get('AWS Access', 'aws_secret_access_key'),
  
          "heroku config:set aws_region=" +
          config.get('AWS Access', 'aws_region'),
  
          "heroku config:set psiturk_access_key_id=" +
          config.get('psiTurk Access', 'psiturk_access_key_id'),
  
          "heroku config:set psiturk_secret_access_id=" +
          config.get('psiTurk Access', 'psiturk_secret_access_id'),
  
          "heroku config:set auto_recruit=" +
          config.get('Experiment Configuration', 'auto_recruit'),
  
          "heroku config:set wallace_email_username=" +
          config.get('Email Access', 'wallace_email_address'),
  
          "heroku config:set wallace_email_key=" +
          config.get('Email Access', 'wallace_email_password'),
  
          "heroku config:set heroku_email_address=" +
          config.get('Heroku Access', 'heroku_email_address'),
  
          "heroku config:set heroku_password=" +
          config.get('Heroku Access', 'heroku_password'),
  
          "heroku config:set whimsical=" + whimsical,
      ]
      for cmd in cmds:
          subprocess.call(cmd + " --app " + id, stdout=out, shell=True)
  
      # Set the notification URL in the cofig file to the notifications URL.
      config.set(
          "Server Parameters",
          "notification_url",
          "http://" + id + ".herokuapp.com/notifications")
  
      # Set the database URL in the config file to the newly generated one.
      log("Saving the URL of the postgres database...")
      db_url = subprocess.check_output(
          "heroku config:get DATABASE_URL --app " + id, shell=True)
      config.set("Database Parameters", "database_url", db_url.rstrip())
      subprocess.call("git add config.txt", stdout=out, shell=True),
      time.sleep(0.25)
      subprocess.call(
          'git commit -m "Save URLs for database and notifications"',
          stdout=out,
          shell=True)
      time.sleep(0.25)
  
      # Launch the Heroku app.
      log("Pushing code to Heroku...")
      subprocess.call("git push heroku HEAD:master", stdout=out,
                      stderr=out, shell=True)
  
      scale_up_dynos(id)
  
      time.sleep(8)
  
      # Launch the experiment.
      log("Launching the experiment on MTurk...")
      subprocess.call(
          'curl --data "" http://{}.herokuapp.com/launch'.format(id),
          shell=True)
  
      time.sleep(8)
  
      url = subprocess.check_output("heroku logs --app " + id + " | sort | " +
                                    "sed -n 's|.*URL:||p'", shell=True)
  
      log("URLs:")
      click.echo(url)
  
      # Return to the branch whence we came.
      os.chdir(cwd)
  
      log("Completed deployment of experiment " + id + ".")