外部依附元件

本文件說明匯入外部依附元件的政策。

  • 所有外部依附元件都必須使用 JIRI 資訊清單固定至特定的 Git 雜湊或 CIPD 套件版本。這項政策可防止其他存放區的變更中斷 Fuchsia 版本。

  • 託管於外部伺服器 (如具備 chromium.googlesource.com) 的存放區必須在 JIRI 資訊清單中使用 <project> 元素,且該元素須具有以下格式的 name 屬性:external/<hostname>/path/to/repo。這個命名配置可確保多個指向同一個外部存放區的參照具有一致的資訊清單值。

  • 如果依附元件包含非標準授權或著作權人,就必須使用 JIRI 資訊清單中的 <project> 元素,並搭配開頭為 third_party/path 屬性。

  • Fuchsia 針對原始碼依附元件設有單一版本政策。具體來說,您最多可一次匯入一組特定原始碼,所有依附該程式碼的項目都必須使用相同版本的程式碼。預先建構的依附元件不適用單一版本政策。

作業模式

原始碼依附元件會以下列任一模式運作:

  • 追蹤上游。當存放區正在追蹤上游時,Fuchsia 專案並非該存放區中程式碼的可靠來源。我們會定期整合上游存放區的更新版程式碼,通常由另一組人員控管 (例如另一個開放原始碼專案)。

    追蹤上游時,我們通常會在 third_party 目錄中建立存放區的鏡像,並使用與上游專案的名稱相同,以確保 Fuchsia 建構作業的程式碼可用性。main 分支版本應指向 Fuchsia 使用的參照,通常是版本標記。上游存放區中的分支版本皆存在於我們的鏡像中,並在前面加上 upstream/ (例如:foo 會變成 upstream/foo)。

    對程式碼所做的任何本機修改 (例如為了與版本或平台整合) 都應該納入 main 分支版本。擷取上游變更時,我們會將 main 分支版本與上游合併,讓 main 分支版本同時包含更新後的上游程式碼和本機修改內容。

    在 Fuchsia 政策中,追蹤上游的第三方存放區不屬於「分支」。

  • 可靠資料來源。當存放區是可靠來源時,Fchsia 專案會控管存放區中的程式碼。源自 Fuchsia 專案的專案會以這個模式運作 (也就是因為沒有可以追蹤的上游),但有時我們會使用其他專案做為存放區的起點,並建立原始專案的「分支」。為現有專案建立分支時,我們會為專案取一個新名稱以避免混淆。

    可靠資料來源的存放區可能位於 third_party 目錄中,或者根據授權而定 (例如,我們使用以非標準授權為起點的專案) 可能不在 third_party 目錄中。