2010-12-10 14 views
5

Ho tre file PHP:Unione di modifiche PHP con diff/patch

  • 1.php - La versione 1.0 del software OSS (vaniglia)
  • 1a.php - La versione 1.0 del software OSS (con personalizzazioni)
  • 2.php - versione 1.1 del software OSS (vaniglia)

Vorrei utilizzare diff/patch (o simile) per creare un file di patch singolo che si fonderanno le modifiche che ho fatto alla versione 1.0 con le modifiche upstream effettuate nella versione 1.1. Qual è il modo migliore per raggiungere questo obiettivo?

Molte grazie.

risposta

5

Utilizzare questa:

$ diff -u 1.php 1a.php > customizations.patch

che vi darà un diff unificata di tutte le modifiche tra il vaniglia e copia personalizzata della versione 1.0 del file.

Si può cercare di applicare le modifiche al nuovo file, 2.php, in questo modo:

$ patch -p0 2.php customizations.patch

Si noti, tuttavia, che questo sarà probabilmente riuscirà con un sacco di blocchi rifiutati se il codice sorgente è cambiato troppo Tuttavia, ottenere questo diff unificato potrebbe rivelarsi utile poiché è possibile quindi reintegrare manualmente le personalizzazioni per adattarle al nuovo codice sorgente.

Quello che farei, se è possibile, è ottenere una copia locale del repository di controllo versione che utilizza il progetto del software libero. Quindi, creane una succursale e integra le tue personalizzazioni, quindi verifica se puoi portare avanti le cose unendo i commit upstream da quel momento nel tuo ramo. Senza vedere tutte le cose coinvolte, non posso né dirti che sarà un processo banale né complesso, ma potrebbe essere più semplice dell'utilizzo di diff e patch.

Nota che non funziona per più file; se hai bisogno di farlo in futuro con più file, ti consigliamo di usare diff su due diversi set di file (con lo stesso nome) in due diversi alberi di directory. Ho pensato che potrebbe non essere una cattiva idea menzionarlo ora, nel caso in cui si rivelasse una situazione che incontrerai in futuro.

+0

Grazie, l'approccio diff/patch ha funzionato perfettamente. Anche se un paio di hunk sono falliti, questi erano abbastanza semplici da unire manualmente. – gjb

+0

Sei il benvenuto. –