Skip to content

Tłumaczenie 🌍

Możesz przetłumaczyć lub poprawić tłumaczenie tej strony.

Wnieś swój wkład

Hashing ​

Funkcje takie jak

caching lub

selektywne wykonywanie testów wymagają sposobu na określenie, czy cel uległ zmianie. Tuist oblicza skrót dla każdego celu w grafie zależności, aby określić, czy cel został zmieniony. Hash jest obliczany na podstawie następujących atrybutów:

  • Atrybuty celu (np. nazwa, platforma, produkt itp.).
  • Pliki celu
  • Skrót zależności celu

Atrybuty pamięci podręcznej ​

Dodatkowo, obliczając hash dla

caching, hashujemy

również następujące atrybuty.

Wersja Swift ​

Skracamy wersję Swift uzyskaną po uruchomieniu polecenia /usr/bin/xcrun swift --version, aby zapobiec błędom kompilacji spowodowanym niezgodnością wersji Swift między celami a plikami binarnymi.

STABILNOŚĆ MODUŁU

Poprzednie wersje buforowania binarnego opierały się na ustawieniu kompilacji BUILD_LIBRARY_FOR_DISTRIBUTION, aby włączyć stabilność modułu i umożliwić korzystanie z plików binarnych z dowolną wersją kompilatora. Powodowało to jednak problemy z kompilacją w projektach z celami, które nie obsługują stabilności modułów. Wygenerowane pliki binarne są powiązane z wersją Swift użytą do ich kompilacji, a wersja Swift musi być zgodna z wersją użytą do kompilacji projektu.

Konfiguracja ​

Ideą flagi -configuration było zapewnienie, że pliki binarne debugowania nie będą używane w kompilacjach wydania i odwrotnie. Nadal jednak brakuje nam mechanizmu usuwania innych konfiguracji z projektów, aby zapobiec ich użyciu.

Debugowanie ​

Jeśli zauważysz niedeterministyczne zachowanie podczas korzystania z buforowania w różnych środowiskach lub wywołaniach, może to być związane z różnicami między środowiskami lub błędem w logice mieszania. Zalecamy wykonanie poniższych kroków w celu debugowania problemu:

  1. Uruchom tuist hash cache lub tuist hash selective-testing (hashe dlabinary cachinglub selective testing), skopiuj hashe, zmień nazwę katalogu projektu i uruchom polecenie ponownie. Skróty powinny się zgadzać.
  2. Jeśli skróty nie są zgodne, prawdopodobnie wygenerowany projekt zależy od środowiska. Uruchom tuist graph --format json w obu przypadkach i porównaj wykresy. Alternatywnie, wygeneruj projekty i porównaj ich pliki project.pbxproj za pomocą narzędzia do porównywania, takiego jak Diffchecker.
  3. Jeśli skróty są takie same, ale różnią się w różnych środowiskach (na przykład CI i lokalnym), upewnij się, że wszędzie używana jest ta sama konfiguracja i wersja Swift. Wersja Swift jest powiązana z wersją Xcode, więc upewnij się, że wersje Xcode są zgodne.

Jeśli hashe nadal są niedeterministyczne, daj nam znać, a my pomożemy w debugowaniu.

PLANOWANE LEPSZE DOŚWIADCZENIE DEBUGOWANIA

Ulepszenie naszego doświadczenia w debugowaniu jest na naszej mapie drogowej. Polecenie print-hashes, któremu brakuje kontekstu do zrozumienia różnic, zostanie zastąpione bardziej przyjaznym dla użytkownika poleceniem, które wykorzystuje strukturę podobną do drzewa, aby pokazać różnice między hashami.

Released under the MIT License.