私は現在、(github) リポジトリの PR でコード スタイル チェックをしようとしています。コード スタイルを簡単に修正できるパッチをサブミッターに配布したいと考えています。この目的のために、私は彼らの PR を引き出し、uncrustify スクリプトを実行してスタイル エラーを修正し、簡単に適用できる .patch ファイルを作成したいと考えています。ただし、一部のファイルでは一貫して壊れます。
私はそうします(gitバージョン1.7.10.4 with core.autocrlf=input
, core.filemode=false
):
$ git checkout pr-branch
$ git log -1 (shows: commit dbb8d3f)
$ git status (nothing to commit, working directory clean)
$ <run the code styler script, which modifies some files>
$ git diff > ../style.patch (so the patch file lands outside the repo)
$ git reset --hard HEAD (to simulate the situation at the submitter's end)
$ git log -1 (shows: commit dbb8d3f)
$ git status (nothing to commit, working directory clean, so we are where we started)
$ git apply ../style.patch
error: patch failed: somefile.cpp:195
error: somefile.cpp: patch does not apply (same output using the --check option)
これはすべてのファイルではなく、一部のファイルにのみ適用されます。これをトラブルシューティングする方法、つまり git にどこが間違っているのかを正確に教えてもらう方法がわかりません - 掘り下げたときに hunk# しか教えてくれませんが、それでもかなり巨大です。
私がこれまでに試したこと(成功せずに):
apply --reverse
、apply --whitespace=nowarn
diff HEAD
diff
一人の代わりに- ダミー コミットを作成する (コミットは問題なく動作します!)、 を使用する、ダミー コミットを削除する、 を使用してまたは使用せずに
format-patch
パッチを適用する、または を使用して適用するgit-am
-3
git-apply
- パッチファイルを1つではなくローカルディレクトリに配置します(ここではストローをつかみます)
- git-diff、-apply、-format-patch、-am のマンページで有用なものを確認してください
- linux
patch
コマンドでパッチを当てる - ....
差分の何が問題なのかわかりません。空白のものは警告するだけですよね?いずれにせよ、これは明らかに空白を含むスタイルの修正であるため、それらを無視したくありません。
これを修正/診断するにはどうすればよいですか?また、どこで問題が解決するかを正確に調べるにはどうすればよいですか? 犯人ファイルの 1 つの差分を投稿すると役に立ちますか? また、コミットは問題なく機能しますが、コミットから作成されたパッチは機能しませんか??
これと数時間格闘した後、私は自分の知識の終わりにいます...