¿Recomendaciones para migrar modificaciones de código personalizado a la nueva versión principal de software de código abierto?

Tengo una installation de producción (sucia) de Simple Machines Forum (SMF 1.1.13). Fue una installation limpia, una vez … hace unos cinco años, veinte actualizaciones y 40 mods atrás. Sin mencionar el código personalizado que fue parcheado directamente en la base de código. Esto comenzó como un proyecto secundario para diversión, y no tenía ninguna práctica de administración de código en el arranque.

Ahora SMF 2 está (cada vez más cerca) en funcionamiento, y quiero actualizar. Pero sin dejar atrás las características personalizadas.

Sigue leyendo, esta es una pregunta general de administración de software, no una pregunta de soporte de SMF …

Estoy intentando descubrir la mejor manera de transferir las funciones personalizadas a la nueva twig del código.

  • En algunos casos, la funcionalidad 1.1.x personalizada ya existirá en 2.0. ¡Sí, no hay trabajo para mí!
  • En algunos casos, habrá packages mod versionados para 2.0, y puedo simplemente instalarlos directamente en una compilation SMF 2 limpia. ¡Sí, trabajo mínimo para mí!
  • En algunos casos, el puerto de código será bastante sencillo entre las dos versiones (por ejemplo, algunos pequeños cambios en las consultas o la construcción de variables globales). (He transferido algunas características / modificaciones de 2.0 a 1.1.x, así que estoy empezando a familiarizarme con ellas).
  • En algunos casos, tendré que volver a desarrollar las características principalmente desde cero.

Esas dos últimas opciones serán difíciles de manejar.

¿Alguna sugerencia sobre cómo transferir un gran número de cambios de una twig a otra? Cuando no es mi propio código interno, eso es. Aquí está mi plan inicial:

  • Diferencia entre una versión limpia de 1.1.x y mi código de producción "sucio"
  • Asignación de cada línea a una característica ("Esa actualización de código es la function de labeldo personalizada, va a tener que portarla línea por línea, y esa de allí es la galería, probablemente pueda instalar un mod actualizado"). Esto sería SOMUCHEASIER. si existiera una herramienta de diferencias que generara un informe consolidado, en lugar de tener que pasar por decenas de files de uno en uno. Las búsquedas de Google y SO no encontraron una herramienta como esa– ¿Hay alguna?
  • Instale una twig 2.0 limpia
  • Instala los mods actualizados disponibles
  • Arréglense de las mangas y repase mi característica de diffs (esta es la razón por la que necesito el informe de diferencias consolidado. Sería un infierno hacer página por página) y comstackrlos de nuevo.

Alguna mejor idea? (Los indicadores para liberar información de gestión son bienvenidos, aunque por supuesto con la advertencia de que no es realmente mi código, así que tengo un control limitado).

¿De otra manera? Me temo que mis opciones son eliminar las características personalizadas (no es realmente factible) o permanecer en la twig anterior. Ambos apestan. ¡Ayuda!

tl; dr : apuntarme a una herramienta de diferencias que hará informes de diferencias archivadas por file para directorys completos. Y / o ayúdame a encontrar una forma más fácil de migrar mi código personalizado.

Generalmente, su plan es el enfoque más práctico, aunque diría que va en la dirección equivocada al search diferencias a nivel de código. Sin control de versión durante la vida del proyecto y sin logging conciso de cambios aplicados, al examinar las diferencias en el nivel de código, busca un nivel de detalle que puede no brindarle la información que necesita para aplicar los mismos cambios a una nueva implementación .

Aléjese de pensar en cambios a nivel de código y considere las características de nivel de aplicación y los cambios de comportamiento. ¿Qué características han introducido sus cambios? ¿De qué manera su aplicación ahora se comporta de manera diferente debido a sus cambios?

Usted dice que se han producido muchos cambios no versionados durante un período prolongado; no podrá encontrar todos los cambios, independientemente de las herramientas que tenga a su disposition, y tendrá que considerar los cambios de function y comportamiento que existen para representar plenamente el mismo características y comportamientos en cualquier implementación actualizada.

Conoce bien su aplicación, la usa y aprecia los cambios de funciones que ha introducido, incluso si no se da count de esto.

  • Instalar una versión 2.0 de vanilla
  • Aplicar todas las modificaciones apropiadas
  • Aplicar un estilo relevante
  • Utilice el nuevo sistema, tenga en count las diferencias de comportamiento y desarrolle a partir de este un set de características requeridas

Su set de características no necesita estar completo; no se estanque en la etapa de tratar de descubrir todos los cambios requeridos, esto llevará demasiado time.

  • Aplicar las características recostackdas a partir de los comentarios más recientes (idealmente a través de mods revertables)
  • Tenga en count las diferencias en el comportamiento en desarrollar a partir de este un set de características requeridas
  • Repetir