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 (git
, 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.