cómo configurar git repos y branches para contribuir a proyectos de terceros?

Tengo una aplicación que depende de un proyecto de código abierto de un tercero alojado en github (llamémoslo "https://github.com/3rd-party-org/3rd-party-lib". Este proyecto tiene una twig "maestra" y varias twigs específicas de la versión (por ejemplo, "xy", "xz").

Deseo poder enviar arreglos ocasionalmente al proyecto de código abierto, mientras mantengo las sucursales locales en mi máquina de desarrollo que (a) se mantienen actualizadas con las sucursales del proyecto de terceros, y (b) contienen mis soluciones, incluidas aquellas que aún no he enviado al proyecto de terceros, y que he enviado pero que aún no han sido aceptados y fusionados (y tal vez nunca lo serán, pero aún así necesito esos cambios para mi propio uso).

Soy bastante nuevo en git, y me gustaría ponerme en el pie derecho aquí.

Esto es lo que estoy pensando, por favor asesórese sobre si esto tiene sentido o si hay alternativas preferibles.

Como una configuration inicial:

  • clonar "https://github.com/3rd-party-org/3rd-party-lib" en mi entorno de desarrollo local
  • en mi repository local, creo twigs de cada una de las twigs definidas por terceros, por ejemplo, la twig "my-master" de "master", "my-xy" de "xy", etc.
  • bifurcar el repository de terceros en github (por ejemplo, a "https://github.com/me/3rd-party-lib"), así que tengo un lugar para enviar correcciones, y desde el que puedo enviar requestes de extracción a la tercera parte mantenedor de lib

Cuando quiero trabajar en una solución al proyecto de terceros, lo haría (en mi entorno de desarrollo local):

  • asegúrese de que "master" esté actualizado tirando desde el origen / maestro
  • fusionar "maestro" en "mi maestro"
  • crear una twig de tema fuera de "master" (por ejemplo, "issue-123")
  • cuando esté listo, empuje mi twig de tema a mi repository bifurcado en github y envíe una request de extracción al proyecto de un tercero
  • de vuelta en mi entorno local, fusionar mi twig de tema en "my-master", de modo que cuando construya mi proyecto dependiente contra "my-master", vea todas mis correcciones.
  • si corresponde, respalde mis arreglos en las twigs "my-xy" o "my-xz" seleccionándolos de "my-master", para que pueda comstackr contra una versión específica de la biblioteca en lugar de "my-master" si no quiero vivir al borde de la hemorragia.

Esto depende de cómo la lib de terceros acepta tiradas o parches. Algunos aceptarán una request de extracción de un tenedor directo, que otros le pedirán que use una sucursal. Aún otros pueden no aceptar requestes de extracción, y solicitar que los parches provengan de otra fuente.

Además de los detalles de devolver el parche a la tercera parte, parece que está en el path correcto para get la máxima flexibilidad.