2010-12-10 16 views
5

Tengo tres archivos PHP:fusionando los cambios de PHP con diferencias/parche

  • 1.php - Versión 1.0 del software OSS (vainilla)
  • 1a.php - Versión 1.0 del software OSS (con personalizaciones)
  • 2.PHP - la versión 1.1 del software de OSS (vainilla)

me gustaría usar diff/patch (o similar) para crear un archivo de revisión único que se fusionarán las modificaciones que hice a la versión 1.0 con los cambios ascendentes realizados en la versión 1.1. ¿Cuál es la mejor manera de lograr esto?

Muchas gracias.

Respuesta

5

Utilice esta:

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

que le dará un diff unificado de todos los cambios entre la vainilla y copia personalizada de la versión 1.0 del archivo.

Usted puede tratar de aplicar estos cambios en el nuevo archivo, 2.PHP, así:

$ patch -p0 2.php customizations.patch

Tenga en cuenta, sin embargo, que esto probablemente fallará con un montón de trozos descartados si el código fuente ha cambiado demasiado Aún así, solo obtener ese diff unificado puede resultar útil ya que luego puede reintegrar manualmente sus personalizaciones para que se ajusten al nuevo código fuente.

Lo que haría, si es posible, es obtener una copia local del repositorio de control de versiones que utiliza el proyecto de software libre. A continuación, cree una rama e integre sus personalizaciones, y luego vea si puede hacer avanzar las cosas fusionando las confirmaciones ascendentes desde ese momento en su sucursal. Sin ver todas las cosas involucradas, tampoco puedo decirte que será un proceso trivial ni complejo, pero podría ser más fácil que usar diff y patch.

Nota que esto no funcionará para múltiples archivos; si necesita hacer esto en el futuro con múltiples archivos, querrá usar diff contra dos conjuntos diferentes de archivos (con el mismo nombre de archivo) en dos árboles de directorios diferentes. Pensé que podría no ser una mala idea mencionar esto ahora en caso de que sea una situación que encuentres en el futuro.

+0

Gracias, el enfoque diff/patch funcionó a la perfección. Aunque un par de trozos fallaron, estos fueron bastante fáciles de combinar manualmente. – gjb

+0

De nada. –