25

Pre-commitを使用してBlackを Git pre-commit フックとして管理しようとしていますが、やり方が間違っているに違いありません。

コミット前の構成ファイルには次のものがあります。

-   repo: https://github.com/psf/black
    rev: 19.3b0
    hooks:
    -   id: black

私が期待しているのは、ブラックがステージングされたファイルを変更するだけで、コミットが成功することです。Black の要点は、Python コード スタイル ルールを自動適用することなので、質問はありません。

(Black に準拠していない) ファイルをステージングしてコミットしようとすると実際に何が起こるか: Black は先に進み、意図したとおりにファイルを準拠するように変更します... しかし、問題はそれが「失敗」を返すことです。したがって、コミットは失敗します。そして、ファイルのステージングを解除し、再度コミットする前に再ステージングする必要があります...そして、コミットが成功するのはその後です。

これは非常に煩わしく、意図したワークフローではないでしょうか?

私は何を間違っていますか?

4

4 に答える 4

7

私の開発者の 1 人が良いヒントを提供してくれました。黒いためにコミットに失敗した場合 (たとえば、一重/二重引用符が原因で)、pre-commit-hook (二重引用符の文字列など) で解決されます。フィクサー)。あなたは一種の「nobodys land gitの状況」に陥ります。ステージングされたファイルに変更されたファイルがありますが、pre-commit-hook ではコミットできません。git status は変更を認識しませんが、コミットは失敗します (私の意見では本当にブラック ホールです)。コミット時にのみ失敗しますが、何もできません (このファイルのリセット ヘッドを除く)。この状況で実行したら: commit -m 'Resolving pre-commit-hook changes' --no-verify..... tada! を使用してください: 解決されました。

于 2020-03-25T23:27:07.650 に答える