2012-04-30 25 views
41

Tengo algunos colaboradores en mi proyecto github. Quiero permitir que solo uno de ellos "empuje" al maestro. Y este chico no soy yo (el dueño del repositorio). Es posible de hacer?Cómo proteger "maestro" en github?

+0

Se trata de un proyecto privado? Si no es así, no es necesario que sean necesariamente colaboradores; pueden bifurcar y usar solicitudes de extracción exclusivamente (lo que exige un nivel de revisión de pseudocódigo para fusionar los cambios) – Daenyth

+1

Github no es compatible con esta funcionalidad, pero si está buscando para soluciones similares: Los repositorios de Assembla admiten esto: http://blog.assembla.com/assemblablog/tabid/12618/bid/96330/Put-Down-Your-Forks-Introducing-Protected-Branches.aspx DIY - auto-hosting git: http://git-scm.com/book/ch7-4.html DIY - self-hosting mercurial: http://mercurial.selenic.com/wiki/AclExtension – Titas

+0

Ver también http://stackoverflow.com/a/5097437/6309 – VonC

Respuesta

34

En aquel entonces, cuando se publicó esta pregunta, GitHub no le permitió especificar privilegios de acceso en un nivel de sucursal. Solo puedes hacerlo en un nivel de repositorio. Entonces, lo que está solicitando no fue posible.

Si desea evitar esta limitación, yo personalmente ver dos opciones:

  • que podría utilizar algún tipo de cometer ganchos, etc. para informar al menos a alguien que algo malo pasó
  • Si Realmente necesita este control estricto, podría usar dos repositorios, uno que solo tenga su rama "maestra". Debería asegurarse de que solo su "persona" obtenga acceso de escritura al repositorio principal

Creo que es más fácil resolverlo con cierta organización. En mi equipo, nunca presionamos nada directamente para dominar, sino que siempre creamos solicitudes de extracción. Eso asegura que al menos alguien mire antes de que el código se fusione y también podría definir una política que solo le permita a su "persona" fusionar las solicitudes de extracción.

actualización

GitHub now announced que se extenderá a todo una nueva característica llamada ramas protegidas. Esta característica ha estado presente en otras distribuciones de git como Atlassian Stash durante años. Te permitirá proteger algunas ramas de los empujes. Sin embargo, todavía no permite la protección completa basada en ACL de ramas individuales. Por lo tanto, es posible que desee verificar esta característica en caso de que no desee confiar en una solución de la organización como se describe anteriormente.

+6

+1 para solicitudes de extracción. – Daenyth

+3

"nunca presionamos nada directamente para dominar" - porque no puede o porque está de acuerdo en no hacerlo? – yegor256

+3

Porque acordamos no hacerlo. A veces es más fácil encontrar una solución blanda en lugar de técnica. – Sebi

3

Esto es exactamente para lo que se diseñó la horquilla. Usted tendría el repositorio principal protegido, y permitiría permisos de lectura en ese repositorio para todos los contribuyentes. Esos contribuidores bifurcarían el repo, y empujarían sus cambios a sus copias personales del repo principal. Cuando estén listos para introducir el código en el repositorio principal, enviarán una solicitud de extracción al repositorio principal. En este caso, los propietarios del proyecto principal podrían completar la solicitud de extracción.

+3

El problema con el flujo de trabajo de forking/PR es que El miembro que tiene privilegios de "escritura" en el repositorio principal aún podría presionarlo. –

9

Nota: Protected branches and required status checks (3 de septiembre de 2015) le permitirá proteger una rama

  • contra forzada empujado
  • contra la eliminación
  • contra los cambios fusionados hasta las comprobaciones de estado requeridos pasan

https://cloud.githubusercontent.com/assets/25792/9596474/27db3ce6-502a-11e5-9b19-5b47a8addc65.png


Desde marzo de 2016, como commented por Sander a continuación, usted tiene User and team restrictions

fusiona veces a una rama protegida es mejor dejar a un gestor de liberación o un equipo de personas responsables de la estabilidad de esa rama en particular . Las organizaciones ahora pueden especificar qué miembros y equipos pueden enviar a una sucursal protegida.

https://cloud.githubusercontent.com/assets/4719/14140705/ed98abac-f67a-11e5-951e-b48c842fb77f.png

+5

lástima, todavía no puede restringir el acceso de la sucursal a ciertos miembros ... Me encantaría esa función para la rama principal. –

+3

Acepto, o al menos puedo restringir la fusión a administradores solo para ramas protegidas. – joeybloggs

+1

@PratikBothra https://github.com/blog/2137-protected-branches-improvements Parece que es posible ahora. :) – Sander

0

Ahora podemos usar el archivo "CODEOWNERS" que requieren la revisión de Código propietarios a una solicitud de extracción válida. Podemos establecer diferentes permisos basados ​​en su cuenta de GitHub.

ver here y here

Cuestiones relacionadas