如何透明地cachinggit clone?

我想提供一个持续集成服务(我打算使用hudson ,但解决scheme也应该为其他人工作),用户将定义一个SCM URL(例如git URL)和工作空间/用于build筑物的源根应该在build筑之前清洁(至less可选)。 这需要大量的重复签出,我想caching(即使他们从本地存储读取,而不是从远程资源获取)。

不同的SCM( gitsvn和mercurial / hg )使用不同的协议(HTTP,HTTPS, git等),其中一些可以被caching(HTTP),其他的一般不会(HTTPS不使用中间人(man-in-the-middle)这对于我想提供的值得信赖的服务来说是不可接受的),或者特别不是(我没有find任何git协议caching服务器)。

cachingHTTP不是一个问题,但很lessgit主机支持它或redirect到HTTPS。 我想支持一个协议,可靠地caching结帐,并build议用户使用它。

HTTP和git协议可以通过SOCKS代理实现redirect,但是不允许caching。 像IGD这样的其他协议也不能用于caching。

事实上,你所说的问题存在并弥补了很多问题,比如“我应该多长时间caching一个答案?如果我有两个项目的提交率非常不同,怎么办? 有一些专有的解决scheme,你正在看的forms,即如果你使用Atlassian Stash,它有一个内置的插件pipe理结帐答案caching,以降低服务器的负载。

无论如何,最好的解决scheme是不同于你想要做的。 最好的和推荐的解决scheme是使用post-commit钩子,它们存在于git,svn中,我也认为在其他vcs中也是如此。 只需让您的存储库触发CI系统上的构build,而不是连续执行CI作业轮询。 正如你所提到的jenkins(哈德森),例如,Git插件已经提供了url来执行这种活动。