我目前正在嘗試對github倉庫的PR進行代碼風格檢查,並且我想將修補程序交付給提交者,用它們可以輕鬆修復代碼風格。爲此,我正在拉下他們的PR,運行我們的uncrustify腳本來修復任何樣式錯誤,並且想要創建一個可以輕鬆應用的.patch文件。但是,它在一些文件中一直打破。git-apply神祕失敗,我該如何解決/修復?
怎麼辦?(Git版本1.7.10.4與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告訴我它到底發生了什麼錯誤 - 當我挖掘它時,它只告訴我一個大塊頭,但這仍然非常大。
我到目前爲止已經試過(沒有成功):
apply --reverse
,apply --whitespace=nowarn
diff HEAD
,而不是單獨diff
- 做一個虛擬提交(!提交作品沒有問題),使用
format-patch
,刪除虛擬提交,應用帶有或不帶-3
的git-am
的補丁,或者與git-apply
- 一起申請帶有補丁文件的lo CAL目錄,而不是一上來(抓救命稻草,在這裏)
- 檢查的git-DIFF的人的頁面,-apply,-format補丁,用於-am有用的東西
- 補丁與Linux
patch
命令 - ....
我不知道什麼可能是錯誤的差異。空白的東西只應該警告,對吧?無論如何,我不想忽視它們,因爲它是一種明顯涉及空白的樣式修復。
我該如何修復/診斷這個問題,甚至找出它準確的保存位置?如果我發佈了其中一個罪魁禍首文件的差異,會有幫助嗎?讓我感到困惑的是,這個委託沒有問題,但是從提交創建的補丁不是?
與此摔跤幾個小時我在我的知識結束後...
'git的應用 - -reject'查看被拒絕的更改。 – aragaer
試過已經......這隻會告訴你整個失敗的大塊(在這種情況下大約2-300行),所以沒有很多信息 – Christoph
另一個猜測 - 可能會有一些文件重命名,有些可能會變成'gitignored'作爲結果。 – aragaer