Я просматривал ресурс git, и мне показалось любопытным, что Check делает клон, а не гораздо более легкий ls-remote
. Я думаю, что есть две причины:
- Возможность фильтровать коммиты на основе метаданных и того, какие файлы изменились в репозитории.
- Поскольку в документах говорится, что он должен возвращать массив версий, а не только последние
Первое очевидно, но я не вижу причин для второго.
Он получает сконфигурированный источник и текущую версию на стандартный ввод и должен вывести массив новых версий в хронологическом порядке на стандартный вывод, включая запрошенную версию, если она все еще действительна.
Но потом он говорит:
Если ваш ресурс не может определить, какие версии новее заданной версии (например, если это git-коммит, который был принудительно загружен), то должна быть возвращена текущая версия вашего ресурса (т. е. новый HEAD).
Итак, мой вопрос: почему ресурс не может всегда просто возвращать одну версию - последнюю. т.е. даже не запрошенная версия, если исходник перешел? Какие функции будут потеряны?
Обратите внимание, что этот вопрос связан с Реализован тип ресурса: как Concourse использует выходные данные сценариев проверки, входа и выхода?