I would like to offer a continuous integration service (I'm planning to use
hudson, but the solution should work for others as well) with a web interface where a user will define a SCM URL (e.g. a
git URL) and the workspace/source root which is used for building should be cleaned (at least optionally) before building. This requires are lot of repeated checkouts which I would like to cache (i.e. make them be read from local storage instead of being fetched from a remote resource).
Different SCMs (
svn and mercurial/
hg) use different protocols (HTTP, HTTPS,
git, etc.), some of them can be cached (HTTP), others generally not (HTTPS without using a man-in-the-middle which is inacceptable for a trustworthy service imo - which I want to provide) or specifically not (I didn't find any
git protocol cache servers).
Caching HTTP isn't a problem, but few
git hoster support it or redirect to HTTPS. I would like to support one protocol which reliably caches checkouts and suggest the user to use it.
Redirection via a SOCKS proxy can be achieved for HTTP and
git protocol, but that doesn't allow caching. Other protocols like IGD can't be used for caching neither.