我当时正在查看git资源,发现感到好奇的是Check正在克隆,而不是轻量级ls-remote
。我认为有两个原因:
第一个很明显,但我看不出第二个原因。
已在stdin上为其提供了已配置的源版本和当前版本,并且必须按时间顺序将新版本的数组打印到stdout,包括仍然有效的所请求版本。
但是后来它说:
如果您的资源无法确定哪个版本比给定的版本新(例如,如果它是git commit推入),则应返回资源的当前版本(即新的HEAD)。
所以我的问题是,为什么资源不能总是只返回一个版本-最新版本。即如果源已经转移,甚至没有请求的版本? 哪些功能会丢失?
请注意,此问题与Implemented a Resource Type: How does Concourse use the output of the check, in, and out scripts?
有关答案 0 :(得分:0)
如果您这样做,资源将显示一组版本,并且您的get
步骤不会返回明确请求的文件的版本({{1返回的版本}}传递给check
),这将违反资源类型设计,并且坦率地说,这是一种不好的做法(为什么您会返回仅仅因为更新而未要求的内容?如果需要,该怎么办?将资源固定到特定版本?)
为什么in
资源执行git
而不是clone
的原因是,您可以将资源配置为仅在某些文件被更改时识别新版本(或者相反)。 ,如果有一个新的提交但更改的文件位于源配置的ls-remote
节中,则ignore_paths
不会返回新资源。
最大的问题是,为什么要这么做?易于编程?性能方面的问题?