<VirtualHost *:80>
  # The ServerName directive sets the request scheme, hostname and port that
  # the server uses to identify itself. This is used when creating
  # redirection URLs. In the context of virtual hosts, the ServerName
  # specifies what hostname must appear in the request's Host: header to
  # match this virtual host. For the default virtual host (this file) this
  # value is not decisive as it is used as a last resort host regardless.
  # However, you must set it for any further virtual host explicitly.
  ServerName localhost
  ServerAdmin webmaster@localhost

  UseCanonicalName On

  SetEnv GIT_PROJECT_ROOT /var/gerrit/git
  SetEnv GIT_HTTP_EXPORT_ALL
  ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
  ScriptAliasMatch "(?i)^/new/(.*)" "/var/cgi/create_repo.sh"

  Alias /git /var/gerrit/git

  # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
  # error, crit, alert, emerg.
  # It is also possible to configure the loglevel for particular
  # modules, e.g.
  LogLevel warn

  ErrorLog ${APACHE_LOG_DIR}/error.log
  CustomLog ${APACHE_LOG_DIR}/access.log combined

  # For most configuration files from conf-available/, which are
  # enabled or disabled at a global level, it is possible to
  # include a line for only one particular virtual host. For example the
  # following line enables the CGI configuration for this host only
  # after it has been globally disabled with "a2disconf".
  #Include conf-available/serve-cgi-bin.conf
  <Files "git-http-backend">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /var/apache/credentials/.htpasswd
    Require valid-user
  </Files>
  <Files "create_repo.sh">
    AuthType Basic
    AuthName "Restricted Content"
    AuthUserFile /var/apache/credentials/.htpasswd
    Require valid-user
  </Files>
</VirtualHost>
