tl; dr use:
pod update podName
Czemu? Czytaj poniżej.
pod update
NIE uszanuje podfile.lock
. Zastąpi to.
pod install
uszanuje podfile.lock
Ten schemat pomaga lepiej zrozumieć różnice:
Główny problem pochodzi od ~>
optymistycznego operatora .
Używanie dokładnych wersji w Podfile
nie wystarczy
Niektórzy mogą pomyśleć, że podanie dokładnych wersji swoich strąków Podfile
, na przykład pod 'A', '1.0.0'
, wystarczy, aby zagwarantować, że każdy użytkownik będzie miał tę samą wersję, co inni ludzie w zespole.
Wtedy mogą nawet użyć pod update
, nawet po prostu dodając nowy zasobnik, myśląc, że nigdy nie zaryzykuje aktualizacji innych zasobników, ponieważ są one ustawione na określonej wersji w Podfile
.
Ale w rzeczywistości to nie wystarczy, aby zagwarantować, że użytkownik 1 i użytkownik 2 w powyższym scenariuszu zawsze otrzymają dokładnie taką samą wersję wszystkich swoich kapsuł.
Jednym z typowych przykładów jest A
zależność kapsuły od kapsuły A2
- zadeklarowanej A.podspec
jako dependency 'A2', '~> 3.0'
. W takim przypadku użycie kapsuły 'A', '1.0.0'
w pliku Podfile zmusi zarówno użytkownika1, jak i użytkownika2, do korzystania zawsze z wersji 1.0.0 kapsuły A, ale:
- użytkownik1 może skończyć z kapsułą
A2
w wersji 3.4
(ponieważ była A2
to najnowsza wersja w tym czasie)
- podczas gdy użytkownik 2 uruchamia się
pod install
przy dołączaniu do projektu później, może dostać A2
wersję w wersji 3.5
(ponieważ opiekun A2
mógł w międzyczasie wydać nową wersję). Dlatego jedynym sposobem, aby upewnić się, każdy członek zespołu pracy z tymi samymi wersjami wszystkich strąków na każdym znajduje się komputer jest użycie Podfile.lock
i właściwie wykorzystywać pod install
w porównaniu pod update
.
Powyższy fragment pochodzi z instalacji pod w porównaniu z aktualizacją pod
Ja również bardzo polecam oglądania co robi podfile.lock
DO
podfile.lock
jest. Zobacz link i film, do którego się odwołuje.