server/priv/docs/zh_Hant/guides/features/projects/hashing.md
<LocalizedLink href="/guides/features/cache">快取</LocalizedLink>或選擇性測試執行等功能需要一種方法來判斷目標是否已變更。Tuist 會為依賴圖表中的每個目標計算雜湊值,以判斷目標是否已變更。哈希值是根據下列屬性計算出來的:
此外,在計算 <LocalizedLink href="/guides/features/cache">caching</LocalizedLink> 的散列值時,我們也會對下列屬性進行散列。
我們散列執行指令/usr/bin/xcrun swift --version 所獲得的 Swift 版本,以防止因目標與二進檔之間的 Swift
版本不匹配而導致編譯錯誤。
[!NOTE] Module Stability
先前版本的二進位緩存依賴
BUILD_LIBRARY_FOR_DISTRIBUTION建立設定來啟用 module stability 並使用任何編譯器版本的二進位檔。然而,這會在不支援模組穩定性的目標專案中造成編譯問題。產生的二進位檔會與用來編譯的 Swift 版本綁定,而 Swift 版本必須與用來編譯專案的版本相符。
-configuration 這個旗號背後的想法是要確保 debug binaries 不會被用在 release builds
中,反之亦然。然而,我們仍然缺少一個機制來移除專案中的其他配置,以防止它們被使用。
如果您在跨環境或調用使用快取時發現非決定性的行為,這可能與跨環境的差異或散列邏輯中的錯誤有關。我們建議按照以下步驟來調試問題:
tuist hash cache 或tuist hash selective-testing (哈希值為
<LocalizedLink href="/guides/features/cache"> 二进制快取</LocalizedLink>或
<LocalizedLink href="/guides/features/selective-testing"> 選擇性測試</LocalizedLink>),複製哈希值,重新命名專案目錄,再執行一次指令。哈希值應該相符。tuist graph --format json 並比較圖形。或者,生成專案,並使用
Diffchecker 等差異工具比較它們的project.pbxproj 檔案。如果哈希值仍然是非確定的,請告訴我們,我們可以協助除錯。
[!NOTE] Better Debugging Experience Planned
改善我們的除錯經驗在我們的路線圖中。print-hashes 指令缺乏瞭解差異的上下文,將被更容易使用的指令取代,該指令使用樹狀結構來顯示哈希值之間的差異。