blob: a0dc30cdf3dd43dd74fbda093a9c3f751619b421 [file] [view]
# vcs-test
We run a version control server for testing at `vcs-test.golang.org`.
## Repositories
The server can serve Bazaar, Fossil, Git, Mercurial, and Subversion repositories.
The root of each repository is `https://vcs-test.golang.org/VCS/REPONAME`,
where `VCS` is the version control system's command name (`bzr` for Bazaar, and so on),
and `REPONAME` is the repository name.
To serve a particular repository, the server downloads
`gs://vcs-test/VCS/REPONAME.zip` from Google Cloud Storage and unzips it
into an empty directory.
The result should be a valid repository directory for the given version control system.
If the needed format of the zip file is unclear, download and inspect `gs://vcs-test/VCS/hello.zip`
from `https://vcs-test.storage.googleapis.com/VCS/hello.zip`.
Google Cloud Storage imposes a default `Cache-Control` policy of 3600 seconds for
publicly-readable objects; for instructions to disable caching per object, see
[`gsutil setmeta`](https://cloud.google.com/storage/docs/gsutil/commands/setmeta).
`vcweb` itself may serve stale data for up to five minutes after a zip file is updated.
To force a rescan of Google Cloud Storage, fetch
`https://vcs-test.golang.org/VCS/REPONAME?vcweb-force-reload=1`.
## Static files
The URL space `https://vcs-test.golang.org/go/NAME` is served by static files,
fetched from `gs://vcs-test/go/NAME.zip`.
The main use for static files is to write redirect HTML.
See `gs://vcs-test/go/hello.zip` for examples.
Note that because the server uses `http.DetectContentType` to deduce
the content type from file data, it is not necessary to
name HTML files with a `.html` suffix.
## HTTPS
The server fetches an HTTPS certificate on demand from Let's Encrypt,
using `golang.org/x/crypto/acme/autocert`.
It caches the certificates in `gs://vcs-test-autocert` using
`golang.org/x/build/autocertcache`.