Come leggere .rej file, vale a dire
Domanda
Ho problemi applicando una patch per il mio albero dei sorgenti, e non è il solito -p
strippaggio problema. patch
è in grado di trovare il file di patch.
In particolare, la mia domanda è come leggere / interpretare il file .rej
patch
crea quando fallisce su alcuni grossi pezzi. La maggior parte delle discussioni di patch
/ diff
che ho visto non comprendono questo.
Soluzione
Un semplice esempio:
$ echo -e "line 1\nline 2\nline 3" > a
$ sed -e 's/2/b/' <a >b
$ sed -e 's/2/c/' <a >c
$ diff a b > ab.diff
$ patch c < ab.diff
$ cat c.rej
***************
*** 2
- line 2
--- 2 -----
+ line b
Come si può vedere: Il vecchio file contiene la linea 2 e il nuovo file dovrebbe contenere linea b. Tuttavia, contiene in realtà la linea C (che non è visibile nel file di scarto).
In realtà, il modo più semplice per risolvere tali problemi è prendere il frammento diff dal file .DIFF / .patch, inserirla nel punto appropriato nel file di una patch e quindi confrontare il codice a mano per capire , quali linee effettivamente causare il conflitto.
oppure - in alternativa:. Prendi il file originale (non modificato), patch ed eseguire un merge a tre vie sul file
Altri suggerimenti
Wiggle è un ottimo strumento per l'applicazione di file .rej quando patch non riesce.
Io non sono un esperto di trattare con i file di patch, ma vorrei aggiungere un po 'di chiarezza su come leggere loro in base alla mia comprensione delle informazioni in essi contenute.
I file .rej
vi dirà:
- la differenza tra l'originale e il file .rej;
- in cui il codice problema inizia nel file originale, quante linee si va avanti per in quel file;
- e dove il codice inizia nel nuovo file, e quante linee si va avanti in tale file.
Quindi, dato questo messaggio, ha osservato all'inizio del mio file .rej:
diff a/www/js/app.js b/www/js/app.js (rejected hunks)
@@ -4,12 +4,24 @@
Vedo che per il mio file problema (www/js/app
), la differenza tra l'originale (indicato come a/www/js/app.js
sulla prima riga) e il file .rej (indicato come b/www/js/
) inizia sulla linea 4 della originale e va avanti per 12 linee (la parte prima della virgola nel @@ -4,12, +4,24 @@
sulla linea due), e inizia il linea 4 della nuova versione del file e va avanti per 24 linee (la parte dopo la virgola in @@ -4,12, +4,24 @@
.
Per ulteriori informazioni, vedere la vista eccellente di file di patch (contenenti le informazioni rilevo sopra, così come i dettagli sulle linee aggiunte e / o tra le versioni dei file) a http://blog.humphd.org/vocamus-906/ .
Le eventuali correzioni o chiarimento benvenuto, naturalmente.