提交前掛鉤

提交前掛鉤 #

pre-commit 是用於建立和執行 git hook 的架構。有關詳細資訊,請參閱官方文件:pre-commit.com

本文件提供詩詞所提供的可用提交前掛勾清單。

備註
如果您在 .pre-commit-config.yaml 中為掛鉤指定 args:,預設值將被覆寫。如果您使用 args:,您必須為掛鉤完整指定所有參數。
備註
如果 pyproject.toml 檔案不在根目錄中,您可以指定 args: ["-C", "./subdirectory"]

poetry-check #

poetry-check 掛鉤呼叫 poetry check 指令,以確保詩詞設定不會在損毀狀態下提交。

參數 #

掛鉤採取與詩詞指令相同的參數。有關詳細資訊,請參閱 check 指令

poetry-lock #

poetry-lock 掛鉤呼叫 poetry lock 指令,以確保鎖定檔案在提交變更時是最新的。

參數 #

掛鉤採取與詩詞指令相同的參數。有關詳細資訊,請參閱 lock 指令

poetry-export #

poetry-export 掛鉤呼叫 poetry export 指令,以將您的 requirements.txt 檔案與您的目前相依性進行同步。

警告
此掛鉤由 詩詞輸出外掛程式 提供。
備註
建議在這之前先執行 poetry-lock 掛勾或 poetry-check 加上引數 --lock

引數 #

此掛勾採用與 poetry 指令相同的引數。如需詳細資料,請參閱 export 指令

預設引數為 args: ["-f", "requirements.txt", "-o", "requirements.txt"],這會在目前工作目錄中建立或更新 requirements.txt 檔案。

你可以於 .pre-commit-config.yaml 中加入 verbose: true 以便輸出至主控台。

hooks:
-   id: poetry-export
    args: ["-f", "requirements.txt"]
    verbose: true

而且,可以將 --dev 加入 args,以寫入開發時期相關依賴項至 requirements.txt

hooks:
-   id: poetry-export
    args: ["--dev", "-f", "requirements.txt", "-o", "requirements.txt"]

poetry-install #

poetry-install 掛勾呼叫 poetry install 指令,以確保所有鎖定套件已安裝。如要安裝此掛勾,你需要指定 default_install_hook_types,或透過 pre-commit install --install-hooks -t post-checkout -t post-merge 安裝。

引數 #

此掛勾採用與 poetry 指令相同的引數。如需詳細資料,請參閱 install 指令

用法 #

如要深入瞭解如何使用 pre-commit,請參閱 官方文件

極簡 .pre-commit-config.yaml 範例

repos:
-   repo: https://github.com/python-poetry/poetry
    rev: ''  # add version here
    hooks:
    -   id: poetry-check
    -   id: poetry-lock
    -   id: poetry-export
    -   id: poetry-install

適用於單一儲存庫設定或 pyproject.toml 檔案不在根目錄中的 .pre-commit-config.yaml 範例

repos:
-   repo: https://github.com/python-poetry/poetry
    rev: ''  # add version here
    hooks:
    -   id: poetry-check
        args: ["-C", "./subdirectory"]
    -   id: poetry-lock
        args: ["-C", "./subdirectory"]
    -   id: poetry-export
        args: ["-C", "./subdirectory", "-f", "requirements.txt", "-o", "./subdirectory/requirements.txt"]
    -   id: poetry-install
        args: ["-C", "./subdirectory"]

常見問題集 #

為什麼 pre-commit autoupdate 無法更新至最新版本? #

pre-commit autoupdate 會將 .pre-commit-config.yaml 中定義的每個儲存庫的 rev 更新至預設分支中的最新可用的標籤。

Poetry 採用分支策略,其中預設分支為活躍的開發分支,修正會套用回穩定分支。新的標籤會指定在這些穩定分支中。

pre-commit 不支援此類分支策略,因此決定不實作選項,無論是在 使用者方面掛勾作者方面,用於定義用來尋找最新可用標籤的分支。

因此,pre-commit autoupdate 無法用於此處說明的掛勾。

透過使用--repo 參數(可以多次指定),你能避免意外變更 rev。此參數能明列應更新的倉庫。顯式排除倉庫的選項已 不在pre-commit 中實作