Las mejores prácticas para mantener una twig divergente del código

Estoy en una situación en la que algunos parches menores que he enviado a un proyecto de código abierto fueron ignorados o explícitamente no aceptados. Los considero útiles, pero lo más importante es que necesito la funcionalidad que implementan.

No quiero enviar más mis ideas y sugerencias a los principales contribuyentes, porque no quiero convertir esto en un problema de ego. Decidí que mi mejor opción sería utilizar lo que escribí para mis propios fines. No quiero bifurcar todo el tree del código fuente porque me gusta cómo funcionan las cosas en general, simplemente no estoy satisfecho con los detalles.

Pero me doy count de que el proyecto evolucionará y me gustaría utilizar las nuevas características que eventualmente aparecerán. Entiendo que tendré que fusionar todas las cosas nuevas en mi propio tree fuente. ¿Hay alguna mejor práctica para este escenario?

Si está usando Git , o podría acostumbrarse a usarlo, tal vez debería echar un vistazo a Stacked Git or Guilt .

Son capas en la parte superior de Git para realizar un seguimiento de los parches.

El enfoque estándar es mantener una sucursal de proveedor en su repository. La idea es importar una copy prístina de las fonts originales (llamada caída de proveedor ) en su repository local y almacenarla en una sucursal. Esta es la versión del código antes de aplicar tus modificaciones. Usted label eso con la versión, luego la copy al tronco principal y aplica sus parches.

Cuando se lanzan nuevas versiones posteriores del código de proveedor, se consulta la twig del proveedor (sin sus modificaciones) y se superpone la nueva versión en la parte superior. Finalmente fusiona la nueva twig con sus modificaciones, comprobando que siguen siendo aplicables / relevantes, y está listo para continuar.

Puede haber complicaciones, por ejemplo, al renombrar, eliminar files, etc. El script svn_load_dirs.pl , que viene con Subversion, puede ayudar con esto al permitirle identificar los files que han cambiado de nombre y automatizar parte de la burocracia.

Este enfoque se discute en detalle (y mucho más claramente) en el libro de Subversion, en la sección Sucursales de proveedores .

En general, crearía una twig del proyecto en el repository. En su caso específico, crearía una twig del directory que contiene su código, si es posible. Muchos repositorys como la subversión te permitirán verificar tu sucursal junto al tronco principal. Eso debería permitirle mantener sus parches y asegurarse de que funcionen con los cambios futuros que se realizan en el enlace troncal.