¿Los colaboradores en un repositorio privado de Github deben bifurcar el repositorio?

14

Estoy trabajando en un proyecto en este momento, y tenemos el código fuente en un repositorio privado en Github, con cada uno de nosotros como colaborador.

Lo que no tenemos claro es cómo separar cada uno de nuestros trabajos.

Lo que creo que debemos hacer es:

  1. Cada uno de nosotros necesita bifurcar el repositorio
  2. Cuando estamos listos para enviar nuestro código, luego enviamos una solicitud de extracción al repositorio del líder del proyecto, que al mismo tiempo puede usar esto como una oportunidad para hacer una revisión del código

Cuando se trata de repositorios privados, ¿para esto se supone que se debe utilizar la bifurcación, o estoy complicando demasiado la situación?

JMK
fuente
1
Si. Hazlo como sugeriste aquí, solo crea un equipo y haz que el repositorio del equipo sea el repositorio "maestro". Todo el mundo hace relaciones públicas, incluido el líder del proyecto.
RubberDuck

Respuestas:

7

Clonar el repositorio en la máquina local del desarrollador ya es una especie de bifurcación. Si cada desarrollador bifurca el repositorio en GitHub, esto solo sirve para publicar su estado actual de trabajo.

Esto puede ser apropiado cuando hay un repositorio principal central y muchos contribuyentes en los que no se confía con acceso directo a ese repositorio. Esto funciona muy bien para proyectos de código abierto donde todos pueden contribuir y emitir una solicitud de extracción que luego es revisada y fusionada por un grupo de mantenedores principales. El uso de repositorios múltiples impone un flujo de trabajo basado en solicitud de extracción.

En un equipo pequeño y confiable, esto no es necesario. Para evitar que diferentes personas se interpongan entre sí, se puede seguir una estrategia como el flujo de Git: cada característica pequeña se implementa en una rama de características separada. Cuando se completa la función, se fusiona en la rama maestra. La mayoría de los equipos combinarán esto con una solicitud de extracción o revisión de código por convención, pero son lo suficientemente confiables como para omitirlo si corresponde. Mientras que los repositorios separados llevarían a un desarrollador a publicar su estado actual en sus repositorios bifurcados pero visibles para el equipo, en un único repositorio común empujarían sus cambios a una rama de características separada. Hacer todo el desarrollo en master / trunk es altamente desaconsejado en la mayoría de los flujos de trabajo.

La diferencia termina siendo únicamente sobre la gestión de acceso, y no tanto sobre el flujo de trabajo implementado. Puede hacer flujos de trabajo basados ​​en solicitud de extracción con cualquier configuración. Desde una perspectiva cruda de Git, no hay mucha diferencia entre una bifurcación y una sucursal: cualquiera de los enfoques comparte esencialmente el historial del proyecto y permite agregar compromisos sin afectar otras sucursales / bifurcaciones. Teniendo esto en cuenta, sería mucho mejor compartir un único repositorio en un grupo cerrado y de confianza.

amon
fuente
1
Solo para hacer eco rápidamente de lo que dice @amon, trabajé en una organización en la que se requería que cada desarrollador se bifurcara de un repositorio principal, lo que todos sentimos era solo un paso adicional innecesario y torpe. Nunca entendí por qué era necesario, pero nuestro equipo de operaciones no lo discutió. El proceso fue: confirmar -> empujar -> solicitud de extracción -> esperar -> esperar un poco más -> intentar llamar la atención del equipo de operaciones sobre IRC -> caminar hacia los chicos de operaciones y pedirles que miren la solicitud de extracción -> espera -> código integrado -> repetir.
DaveyDaveDave
1
Realmente desaliento este flujo de trabajo. He experimentado conflictos de fusión realmente malos con dos desarrolladores, ambos presionando directamente al repositorio canónico. Sin mencionar que aún es mejor que alguien más revise su código. Es mucho más fácil enviar solicitudes de extracción si cada una tiene una bifurcación, y hay un repositorio de proyecto canónico. Sí, sí. Lo sé, eso no está "distribuido". Lo que sea. El modelo de horquilla y relaciones públicas funciona mejor en mi experiencia.
RubberDuck
@RubberDuck ese es un buen punto, sospecho que mi caso fue raro porque las personas responsables de las solicitudes de extracción no estaban en condiciones de revisar el código, lo que lo hizo inútil. Sugeriría otras herramientas dedicadas para la revisión del código, como gerrit podría ser más efectivo, pero sí creo que bifurcar puede (debería) funcionar de manera similar.
DaveyDaveDave
El problema es quién determina cuándo la función está lista para entrar en master. También me resulta complicado trabajar con ramas; Cientos de sucursales en un repositorio y la mayoría de ellas no están fusionadas o a medio hacer, ¿por qué deberían existir si ni siquiera están listas para fusionarse? La gestión de acceso es 100% sobre el flujo de trabajo, esta respuesta es solo la mitad buena.
Rudolf Olah
5

Esto funcionaría, o podría usar un método de ramificación en el que cada contribu tiene sus propias ramas, que cuando el equipo está de acuerdo, se fusionan con master.

Margeaux Spring
fuente
Gracias, voy a ir con la otra respuesta ya que tiene más detalles, pero sí, estoy de acuerdo :)
JMK