Attualmente sto cercando di eseguire il controllo in stile codice sui PR di un repository (github) e voglio consegnare le patch ai submitter con cui possono facilmente risolvere il codestyle. A tal fine, sto tirando giù il loro PR, eseguo il nostro script non crittografato su di esso per correggere eventuali errori di stile e voglio creare un file .patch che possano facilmente applicare. Tuttavia, si rompe costantemente su alcuni file.git-apply fallisce misteriosamente, come posso risolvere/risolvere?
I do (Git versione 1.7.10.4 con 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)
Questo vale solo per alcuni file, non tutti di loro. Non so come risolvere questo problema, ad esempio come ottenere git per dirmi esattamente dove va male - mi dice solo un hunk # quando scrivo, ma è ancora abbastanza grande.
Quello che ho provato finora (senza successo):
apply --reverse
,apply --whitespace=nowarn
diff HEAD
invece di solodiff
- fare un manichino commit (! Commettere opere senza problemi), utilizzare
format-patch
, eliminare il commit fittizio, applicare la patch congit-am
con o senza-3
o applicare congit-apply
- Avere il file di correzione nello cal dir invece di uno fino (afferrare a cannucce, qui)
- Controllare le pagine man di git-diff, -Apply, -format-patch, -am per qualcosa di utile
- patch con il comando di Linux
patch
- ....
Non so cosa potrebbe essere sbagliato con il diff. Le cose dello spazio bianco dovrebbero solo avvertire, giusto? In ogni caso, non voglio ignorarli, poiché si tratta di una correzione di stile che ovviamente coinvolge spazi bianchi.
Come posso risolvere/diagnosticare questo o persino scoprire dove si trova esattamente il punto di balle? Sarebbe d'aiuto se avessi postato il diff di uno dei file colpevoli? Ciò che mi confonde anche è che il comando funziona senza problemi, ma la patch creata dal commit non lo fa ??
Dopo aver lottato con questo per diverse ore Sono alla fine della mia conoscenza ...
'git applicare - -reject' per vedere le modifiche respinte. – aragaer
Provato già ... questo mostra solo l'intero pezzo che fallisce (circa 2-300 linee in quel caso), quindi non molto informativo – Christoph
Un'altra ipotesi - potrebbero esserci alcuni nomi di file e qualcosa potrebbe essere diventato 'gitignored' come risultato. – aragaer