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.