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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top