web-dev-qa-db-ja.com

コミット前フックが常にコミットに失敗するため、黒

使用しようとしています pre-commit を管理するには black をGitのプリコミットフックとして使用しますが、間違っているはずです。

黒の自動実行Pythonコードスタイルルール。私のコミット前の構成ファイルで:

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

私が期待しているのは、黒がファイルを変更するだけで、コミットが成功することです。

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

これは大きな煩わしさであり、意図したワークフローではないのでしょうか?

何が悪いのですか?

黒のREADMEを見ると、おそらく--checkオプション。これは、ファイルが標準に適合しているかどうかに応じて、正常に終了するか失敗して終了するかを示します。これにより、ファイルを変更せずにコミットが失敗します。

1
bk2204

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

0
michel.iamit

私はあなたと同じ船です。 私が調査してきたことから、コミットはプリコミットフックでは修正できません。

私が理解できる限り、次の最良のものはbk2204の概要です。 pythonファイルが黒で適切にフォーマットされていないコミットを防止するように黒に依頼します。それでも、すべてのコミットがフォーマットされていることを確認しますが、実際にはそれが不愉快です。自動的にファイルをフォーマットします。

それは理にかなっている。コミットの変更はすべてステージングする必要があります。これをgitフックから実行できれば、問題は解決されます。 gitフックから直接ファイルを変更して、途中まで行きました。次の半分は、変更されたファイルのすべての変更をステージングすることになります。しかし、明らかに...「ステージングなしを意味する「プリコミットフックでコミットを修正することはできません」。 https://stackoverflow.com/a/14641656/6032076

私はbk2204の回答についてコメントしたでしょうが、まだ50人の担当者がいません。

すべてをスクラッチして、この回答( https://stackoverflow.com/a/16832764/6032076 )は、コミット前のフックでコミットを変更できると主張しています。その場合、ファイルが追加されるので、私たちの場合、ファイルを再ステージング/修正できると思います。

0
DavidTriphon