Обновление вашего проекта Swift на стороне сервера для использования Swift 3.1 вносит большие изменения в то, как работает менеджер пакетов Swift, о котором вы, возможно, не знаете - обновление ваших зависимостей по умолчанию генерирует этот файл Package.pins. . Так что это за штука?

TL;DR: Package.pins — это в основном то же самое, что и Podfile.lock при использовании Cocopods.

`Package.pins` — это новый файл, используемый для закрепления ваших зависимостей к конкретным выпускам. Что я обычно делаю, так это то, что все мои зависимости в `Package.swift` привязаны к основному выпуску, например .Package(url: «https://github.com/vapor/vapor.git», MajorVersion: 1) в случае Vapor. Причина, по которой незначительные выпуски и выпуски с исправлениями ошибок, как правило, не должны вносить никаких критических изменений, а вызов быстрого обновления пакета удобно обновляет все мои зависимости до их последнего выпуска с незначительными исправлениями / исправлениями. Что вам также обычно нужно, так это версию вашего приложения, которую вы развернули в Heroku или где-либо еще, чтобы использовать точные версии зависимостей, с которыми вы тестировали свое приложение локально, чтобы предотвратить любые неприятные сюрпризы. Именно для этого предназначен Package.pins, он прикрепляет все ваши зависимости к указанной версии и вызывает быструю выборку пакета или swift build --enable-prefetching в случае с пакетом сборки Heroku, который я использую, этот файл используется для получения закрепленных версий зависимостей.

Вызов swift package update повторно закрепляет ваши зависимости, обновляя Package.pins.

Это определенно шаг в правильном направлении, чтобы сделать менеджер пакетов Swift готовым к работе. Вы можете обратиться к официальной странице github менеджера пакетов Swift для получения дополнительной информации.