Proteger una rama de git en Visual Studio Team Services


Me gustaría que solo los desarrolladores permitidos explícitamente se fusionaran en una rama 'master'. He encontrado la ubicación de la configuración de seguridad, pero nada parece permitirme decir 'esa rama, solo permitir que Rob se fusione en ella'. Orientación específica, por favor?

Author: MrHinsh - Martin Hinshelwood, 2015-01-25

4 answers

Puede proteger MASTER en VSTS con bastante facilidad, ya que TFS proporciona capacidades empresariales de Git. Hay dos maneras de lograrlo.

1) Permisos de rama de Git

En las páginas de administración en la pestaña Control de versiones puede cambiar los permisos para cada rama publicada. Necesita mantener el acceso en el nivel de repositorio, sin embargo, en MASTER puede cambiar el permiso de confirmación de " Colaborador "a"no configurado". A continuación, puede añadir solo Rob...

Permisos de rama de Git de VSTS

Oh... Usar siempre "no establecer "en lugar de" negar " como negar siempre anula.

2) Políticas de rama de Git

VSTS ha introducido la idea de Políticas de rama. Estas políticas de rama se pueden aplicar a cualquier rama, pero tradicionalmente se aplican a MASTER.

Políticas de VSTS Git Branch

Aquí puede aplicar varias políticas para reflejar sus necesidades... Siempre pongo

 41
Author: MrHinsh - Martin Hinshelwood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-23 04:06:53

Me di cuenta de que tenía que ir a través de un poco más de pasos para conseguir esto hecho

Hay 2 lugares para definir grupos en visual studio online - a nivel de colección y a nivel de proyecto.

En el nivel de colección creé un grupo de administración y creé un grupo de desarrolladores. Solo quería que las personas del grupo de administración tuvieran acceso de escritura a la rama maestra en mi repositorio.

A nivel de proyecto, agregué el grupo de desarrolladores y administradores al equipo del proyecto. En el proyecto grupo de colaboradores Eliminé el equipo del proyecto y agregué solo el grupo de desarrolladores

En el grupo administradores de proyectos he añadido el grupo de administradores de nivel de colección.

Luego, en la pestaña control de versiones de la rama maestra, establezco contribute = deny para el grupo contributors

Como los administradores no son miembros del grupo de colaboradores, el permiso de denegación no se les aplica y aún pueden enviar cambios al maestro, ya sea directamente o mediante la aprobación de solicitudes de extracción

 8
Author: Anthony Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-30 20:14:11

He creado con éxito los (2) tipos de grupos basados en @anthonybrown. Quería, sin embargo, dar algunas capturas de pantalla para ayudar aún más a la explicación de la resolución de la capacidad de restringir a los usuarios de eliminar, empujar y contribuir a la rama master (u otra rama(es) de su elección) en una base de nivel de repositorio, no a nivel global.

Tenga en cuenta que, según nuestros VSTS, ya hemos agregado usuarios al equipo "global". No eliminé a estos usuarios, sino que agregué a (2) grupos separados.

  • Desarrolladores
  • Administradores

1) Vaya a su pantalla de VSTS base (esto será por defecto /_projects en la URL.

introduzca la descripción de la imagen aquí

2) Haga clic en el engranaje y seleccione "Seguridad"

introduzca la descripción de la imagen aquí

3) En el extremo izquierdo, seleccione "Crear grupo" y asígnele el nombre de "Desarrolladores". Una vez creado el grupo, seleccione el grupo, y en la sección central, seleccione "Miembros". Agrega todos los usuarios que HACES NO quiere tener derechos de contribución a la rama "master" de este grupo. (nota: los usuarios ya deben agregarse a VSTS antes de este paso).

introduzca la descripción de la imagen aquí

4) Cree el grupo "Administradores" y agregue los usuarios a los que DESEA que tenga acceso. (nota: si los usuarios del grupo "Administradores" ya están agregados a VSTS a nivel global o de proyecto, puede omitir este paso. Lo hice a pesar de todo).

5) Volver a la página de inicio de VSTS (/_projects) y seleccione su repositorio que desea restringir el acceso a la rama maestra. Seleccione "Control De Versiones". En el lado izquierdo, seleccione la rama "master". En la sección central, seleccione "Seguridad". Añadir el " Grupo de desarrolladores. Seleccione el grupo "Desarrolladores" (una vez agregado) y establezca el acceso a "Denegar" para:

  • Contribuir (esto será empujando
  • Editar políticas
  • Fuerza de empuje
  • Administrar permisos

introduzca la descripción de la imagen aquí

 2
Author: Rob Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-06 17:27:50

Normalmente creo un grupo especial de VSO como "Devs" y luego coloco a los desarrolladores en él. Luego, utilizo el grupo como un grupo miembro de Colaboradores del proyecto y luego específicamente en la rama que quiero proteger, utilizo el grupo " Devs "y establezco Contribute en Deny, por lo que solo los miembros del grupo" Devs " tienen la contribución denegada, pero por ejemplo, los administradores del Proyecto aún pueden enviarla.

Si establece Contribute en Deny directamente en el grupo Contributors, entonces nadie puede empujar en la rama, ni siquiera Administradores y ni siquiera si establece específicamente Permitir en su Contribución, simplemente porque Deny es más fuerte que Allow, a menos que realice algunos cambios más amplios en los grupos originales.

 0
Author: Santhos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-22 09:51:14