Rozumiem, że następujące polecenie zaktualizuje jeden strąk: pod update <podname>
. Jednak powoduje to również aktualizację zależności między innymi zasobnikami (zasobnikami, które nie były zawarte w poleceniu aktualizacji), które zostały wcześniej zainstalowane. Czy istnieje sposób na zaktualizowanie pojedynczego zasobnika i pozostawienie wszystkich innych zależności w spokoju?
201
podfile.lock
jest. Zobacz link i film, do którego się odwołuje.Odpowiedzi:
Upewnij się, że masz zainstalowaną najnowszą wersję CocoaPods.
$ pod update POD
został wprowadzony niedawno.Zobacz ten wątek, aby uzyskać więcej informacji :
źródło
$ pod update SomePodName
. Są jednak przypadki, w których CocoaPods spróbuje również zaktualizować zależności innych strąków. Krótko mówiąc, SomePodName nie jest jedynym zasobnikiem, który w niektórych przypadkach będzie aktualizowany.pod install
, przywraca to pierwotną wersję. Ale nie chcę stracić moich zmianpod update
dotyka wszystkiego. Nie robi tego, co jest napisane na puszce i jest bardzo frustrujące. Losowo usuwa nagłówki z innych strąków, których nie kazałeś dotykać itp.Aby zainstalować pojedynczą kapsułę bez aktualizacji istniejących-> Dodaj tę kapsułkę do pliku Podfile i użyj:
Aby usunąć / zaktualizować konkretną kapsułę, użyj:
Przetestowany!
źródło
Jest 2015 rok
Ponieważ
pod update SomePod
dotyka wszystkiego w najnowszych wersjach cocoapods, znalazłem obejście.Wykonaj kolejne kroki:
Usuń
SomePod
zPodfile
Biegać
pod install
strąki zostaną teraz usunięte
SomePod
z naszego projektu i zPodfile.lock
pliku.Włóż z powrotem
SomePod
doPodfile
Uruchom
pod install
ponownieTym razem najnowsza wersja naszego zasobnika zostanie zainstalowana i zapisana w
Podfile.lock
.źródło
pod update somepod anotherpod thirdpod
aktualizację wielu strąków jednocześnie :)SomePod
zaktualizowano do najnowszych zależności, czy nie zaktualizowałoby współdzielonej zależnościanotherPod
do najnowszej wersji? Czy to się nie stanie niezależnie od tego, co jest w podlocku? W przeciwnym razie nie będzie w stanie spełnić wymagańSomePod
tylko mówię:
pod install
- do instalowania nowych strąków,pod update
- do aktualizacji istniejących strąków,pod update podName
- do aktualizacji tylko określonych kapsuł bez dotykania innych kapsuł,pod update podName versionNum
- do aktualizacji / obniżenia konkretnego zasobnika bez dotykania innych zasobnikówźródło
pod
zamiastgit
?Tylko mała informacja.
będzie działać tylko wtedy, gdy ten moduł został już zainstalowany. W przeciwnym razie będziesz musiał zaktualizować je wszystkie
Komenda
źródło
pod install
pierwszego, który zainstaluje tylko brakujący (e), bez dotykania innych. Chociaż nie ma potrzeby, aby chcieć zaktualizować kapsułę, której jeszcze nie zainstalowałeś, prawda?tl; dr use:
Czemu? Czytaj poniżej.
pod update
NIE uszanujepodfile.lock
. Zastąpi to.pod install
uszanujepodfile.lock
Ten schemat pomaga lepiej zrozumieć różnice:
Główny problem pochodzi od
~>
optymistycznego operatora .Używanie dokładnych wersji w
Podfile
nie wystarczyNiektórzy mogą pomyśleć, że podanie dokładnych wersji swoich strąków
Podfile
, na przykładpod '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 wPodfile
.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łyA2
- zadeklarowanejA.podspec
jakodependency '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:A2
w wersji3.4
(ponieważ byłaA2
to najnowsza wersja w tym czasie)pod install
przy dołączaniu do projektu później, może dostaćA2
wersję w wersji3.5
(ponieważ opiekunA2
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życiePodfile.lock
i właściwie wykorzystywaćpod install
w porównaniupod 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źródło
Używam
cocoapods version 1.0.1
i używampod update name-of-pod
działa idealnie. Żadne inne kapsułki nie są aktualizowane, tylko ten, który wprowadzasz.źródło
Jest to nieco odstające i prawdopodobnie nie będzie to, z czym miał do czynienia OP, ale
pod update <podname>
nie będzie działać we wszystkich przypadkach, jeśli używasz lokalnego komputera na swoim komputerze.W tej sytuacji jedyną rzeczą, która uruchomi się
pod update
do działania, jest zmiana pliku podspec. Jednak dokonanie zmiany pozwoli również napod install
pracę.W tej sytuacji możesz po prostu zmodyfikować coś pomniejszego, na przykład opis lub streszczenie, za pomocą jednej litery, a następnie pomyślnie uruchomić polecenie instalacji lub aktualizacji.
źródło