Что именно делает "berks update <cookbook-name>"?

В соответствии с "berks help update", команда должна:

"Обновите кулинарные книги (и зависимости), указанные в Berksfile"

(Да... что все это говорит!).

Но что именно это означает?

И как это зависит от разных видов спецификации "cookbook" в вашем Berksfile?

Ответ 1

Команда update попытается найти новейшие версии каждой поваренной книги (которые все еще соответствуют любым требованиям к версии, которые вы определили). Например, предположим, что у вас есть следующий Berksfile:

cookbook 'foo', '~> 1.0.0'

Это говорит Беркшельфу о принятии любой версии в серии 1.0.x. Таким образом, вы запускаете berks install и (предположительно) foo-1.0.5 устанавливается в локальную berkshelf. Файл блокировки "заблокирует" определение для foo в версии 1.0.5, поэтому другие разработчики и будущие установки всегда будут использовать версию 1.0.5 (это вся точка файла блокировки).

(Проходит несколько месяцев...)

Теперь вы хотите обновить кулинарию до последней версии. Но из-за SemVer вы хотите остаться в серии 1.0.x. Запуск berks update откроет жесткую зависимость в файле блокировки, но сохранит ограничение в Berksfile. Итак (гипотетически), если на сайте сообщества были следующие версии cookbook foo:

  • 1.0.5
  • 1.0.6
  • 1.0.8
  • 1.1.0
  • 2.0.0

berks update обновит вашу локальную версию до 1.0.8, поскольку это последняя опубликованная версия, которая все еще удовлетворяет вашим ограничениям.