2010-03-13 7 views
5

Tengo un repositorio de git central al que todos presionan para realizar pruebas e integración, pero solo se envía cuando las funciones están "listas". Mientras se encuentran en medio de una gran tarea, los desarrolladores frecuentemente tienen muchos compromisos que permanecen en sus discos duros.¿Cómo compartes tu repositorio de git con otros desarrolladores?

A veces, en medio de estos proyectos, me gustaría ver qué hace otro desarrollador o mostrarle cómo he hecho algo. Me gustaría poder decirle a otro desarrollador que simplemente "saque mi copia de trabajo".

La única forma en que puedo pensar es hacer que todos ejecuten SSH en sus máquinas de desarrollo y agreguen cuentas o claves SSH para todos, pero esta es una gran pesadilla de privacidad y permisos, y parece mucho trabajo de mantener.

¿Deberíamos estar empujando a ese repositorio central en estos casos? ¿Deberíamos presionar después de cada compromiso local?

+0

¿Está utilizando Linux o Windows? – hasen

+0

la mayoría de los desarrolladores actuales están en OS X, por lo que ssh no está fuera de discusión por completo. – semi

Respuesta

3

Dos enfoques comunes:

  • desarrolladores tienen sus propios repositorios públicos (por ejemplo mpd y programas asociados).
  • desarrolladores push to refs en su propio espacio de nombres en un repo central (dev1/master, dev2/master). Dependiendo de su situación exacta, es posible que desee un control de acceso en forma de ganchos para asegurarse de que nadie haga nada tonto.
3

Utilizamos ramas de código que no está "listo", sin embargo, y las ramas quedarse relegados a un acuerdo de recompra central (que está respaldado!). Cuando una nueva característica se "prepara", se fusiona en la rama master.

Uno de los beneficios de usar git es que es muy, muy fácil crear y combinar ramas, además de que puedes visualizar lo que está pasando usando gitk. ¡Recomendado!

+0

Olvidé dónde aprendí esto: si tiene varios desarrolladores, cada desarrollador trabaja en una o más ramas con el prefijo de sus iniciales, p. nr/propuesto, nr/line-end-fixes, y solo usar la rama maestra para la integración. Las ramas pueden ser empujadas alrededor de los repositorios y la fuente original permanece libre, y no hay conflictos de nombres de ramas. –

+0

Esto encaja con la filosofía git de las ramas de características ... solo se trata de ramas de características a distancia. Un proyecto mío usa este enfoque y parece estar funcionando bien. – RyanWilcox

Cuestiones relacionadas