Что именно делает "berks update <cookbook-name>"?
Согласно "обновлению справки berks", команда должна:
"Обновить поваренные книги (и зависимости), указанные в Berksfile"
(Да... это все, что он говорит!).
Но что конкретно это означает?
И как это зависит от спецификаций "поваренной книги" в вашем Berksfile?
1 ответ
Команда update попытается найти самые новые версии каждой кулинарной книги (которые по-прежнему соответствуют любым требованиям к версии, которые вы определили). Например, предположим, что у вас есть следующий Berksfile:
cookbook 'foo', '~> 1.0.0'
Это говорит Berkshelf принять любую версию в 1.0.x
серии. Итак, вы бежите berks install
и (гипотетически) foo-1.0.5
установлен в вашу местную полку. Файл блокировки "заблокирует" определение для foo в версии 1.0.5, поэтому другие разработчики и будущие установки всегда будут использовать версию 1.0.5 (в этом весь смысл файла блокировки).
(Проходит несколько месяцев...)
Теперь вы хотите обновить кулинарную книгу до последней версии. Но из-за SemVer вы хотите остаться в серии 1.0.x. Бег berks update
разблокирует жесткую зависимость в файле блокировки, но сохранит ограничение в файле Berksfile. Так (гипотетически), если на сайте сообщества есть следующие версии foo cookbook:
- 1.0.5
- 1.0.6
- 1.0.8
- 1.1.0
- 2.0.0
berks update
обновит вашу локальную версию до 1.0.8
, поскольку это последняя опубликованная версия, которая все еще удовлетворяет вашим ограничениям.