Mejora de la calidad del código con directivas de ramas

Azure Repos | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018-TFS 2015

Las directivas de rama ayudan a los equipos a proteger sus ramas importantes de desarrollo. Las directivas aplican los estándares de administración de cambios y la calidad del código del equipo.

Configuración de directivas de rama

Seleccione Repos > ramas para abrir la página Ramas en el portal web.

Abrir la página Ramas en la web

Busque la rama en la página. Puede examinar la lista o puede buscar la rama mediante el cuadro Buscar todas las ramas de la esquina superior derecha.

Página Ramas

Seleccione el botón ... . Seleccione Directivas de rama en el menú contextual.

Abra las directivas de rama desde el menú contextual.

Configure directivas en la página Configuración configuración. Consulte las secciones siguientes para obtener descripciones de cada tipo de directiva.

Configure las directivas en la página Directivas. Consulte las secciones siguientes para obtener descripciones de cada tipo de directiva. Seleccione Guardar cambios para aplicar la nueva configuración de directiva.

Pestaña Directivas

Requerir un número mínimo de revisores

Las revisiones de código son un procedimiento recomendado para la mayoría de los proyectos de desarrollo de software. Para requerir que los equipos revisen sus cambios antes de completar una solicitud de extracción, seleccione Requerir un número mínimo de revisores.

La directiva básica requiere que un determinado número de revisores apruebe el código sin rechazos.

Habilitación de la directiva Requerir revisiones de código

  • Si se selecciona Permitir que los solicitantes aprueben sus propios cambios, el creador de la solicitud de extracción puede votar su aprobación. Si no es así, todavía pueden votar Aprobar en su solicitud de extracción, pero su voto no cuenta para el número mínimo de revisores.
  • De forma predeterminada, cualquier persona con permisos de inserción en la rama de origen puede agregar confirmaciones y votar la aprobación de la solicitud de extracción. Al habilitar Prohibir que el pusher más reciente apruebe sus propios cambios, puede aplicar la segregación de tareas; si se tiene la inserción más reciente, el voto del push no se cuenta automáticamente.
  • Si algún revisor rechaza los cambios, la solicitud de extracción no puede finalizar a menos que seleccione Permitir finalización incluso si algunos revisores votan para esperar o rechazar.
  • Puede restablecer los votos del revisor de código cuando se insertan nuevos cambios en la rama de origen. Seleccione Reset code reviewer votes when there are new changes (Restablecer votos de revisor de código cuando haya cambios nuevos).

Active la casilla Requerir revisiones de código

  • Si los solicitantes pueden aprobar sus propios cambios no está seleccionado, el creador de la solicitud de extracción todavía puede votar Aprobar en su solicitud de extracción, pero su voto no cuenta para el número mínimo de revisores.
  • Si algún revisor rechaza los cambios, la solicitud de extracción no puede finalizar a menos que seleccione Permitir finalización incluso si algunos revisores votan para esperar o rechazar.
  • Puede restablecer los votos del revisor de código cuando se insertan nuevos cambios en la rama de origen. Seleccione Reset code reviewer votes when there are new changes (Restablecer votos de revisor de código cuando haya cambios nuevos).

Cuando el número necesario de revisores aprueba la solicitud de extracción, puede finalizar.

Nota

Los solicitantes pueden aprobar su propia configuración de cambios solo se aplica a la directiva Requerir un número mínimo de revisores. No afecta a otras directivas, como Incluir automáticamente revisores de código. Por ejemplo, Jamal Harnett crea una solicitud de extracción con las siguientes directivas configuradas:

  • El número mínimo de revisores requiere dos revisores.
  • Los solicitantes pueden aprobar sus propios cambios no están establecidos.
  • El grupo Equipo de Fabrikam es un revisor necesario y Jamal es miembro de ese grupo.

En este ejemplo, dado que Jamal forma parte del grupo Equipo de Fabrikam, su voto Aprobar satisface la directiva de revisor necesaria. La solicitud de extracción todavía requiere dos votos de aprobación adicionales para satisfacer la directiva Número mínimo de revisores, ya que su voto no cuenta para esa directiva.

Comprobación de elementos de trabajo vinculados

Requerir asociaciones entre las solicitudes de extracción y un elemento de trabajo para asegurarse de que los cambios en la rama tienen seguimiento de administración de elementos de trabajo. La vinculación de elementos de trabajo proporciona contexto adicional para los cambios y garantiza que las actualizaciones pasen por el proceso de seguimiento de elementos de trabajo.

Requerir elementos de trabajo vinculados en las solicitudes de extracción

Requerir elementos de trabajo vinculados en las solicitudes de extracción

Comprobación de la resolución de comentarios

Para configurar una directiva de resolución de comentarios para la rama, seleccione Comprobar la resolución de comentarios.

Comprobación de la resolución de comentarios

Para obtener más información sobre cómo trabajar con comentarios de solicitud de extracción, vea Solicitudes de extracción: dejar comentarios.

Para configurar una directiva de resolución de comentarios para la rama, seleccione Comprobar la resolución de comentarios.

Comprobación de la resolución de comentarios

Para obtener más información sobre cómo trabajar con comentarios de solicitud de extracción, vea Solicitudes de extracción: dejar comentarios.

Limitar tipos de combinación

Mantenga un historial de ramas coherente mediante la aplicación de una estrategia de combinación cuando finalice una solicitud de extracción. Azure Repos varias estrategias de combinación y, de forma predeterminada, se permiten todas ellas. Seleccione Limitar tipos de combinación para elegir cuáles se permitirán en el repositorio.

Limitar tipos de combinación

  • Combinación básica (sin avance rápido): crea una confirmación de combinación en el destino cuyos elementos principal son las ramas de origen y de destino.
  • Combinación de squash: crea un historial lineal con una sola confirmación en la rama de destino con los cambios de la rama de origen. Obtenga más información sobre la combinación de squash y cómo afecta al historial de ramas.
  • Rebase y avance rápido: crea un historial lineal mediante la reproducción de confirmaciones de origen en la rama de destino sin confirmación de combinación.
  • Volver a base con confirmación de combinación: reproduce las confirmaciones de origen en el destino y sigue creando una confirmación de combinación.

Aplicación de una estrategia de combinación

Mantenga un historial de ramas coherente mediante la aplicación de una estrategia de combinación cuando finalice una solicitud de extracción. Seleccione Aplicar una estrategia de combinación y elija una opción para requerir que las solicitudes de extracción se combinen con esa estrategia.

Establecer los requisitos de combinación

  • Sin combinación de avance rápido: esta opción combina el historial de confirmaciones de la rama de origen cuando se cierra la solicitud de extracción y crea una confirmación de combinación en la rama de destino.
  • Combinación de squash: complete todas las solicitudes de extracción con una combinación de squash, creando una sola confirmación en la rama de destino con los cambios de la rama de origen. Obtenga más información sobre la combinación de squash y cómo afecta al historial de ramas.

Validación de compilación

Establezca una directiva que requiera cambios en una solicitud de extracción para compilar correctamente con la rama protegida antes de que se pueda completar la solicitud de extracción. Las directivas de compilación reducen los saltos y mantienen los resultados de las pruebas. Las directivas de compilación ayudan incluso si usa la integración continua (CI) en las ramas de desarrollo para detectar problemas pronto.

Si se habilita una directiva de validación de compilación, se pone en cola una nueva compilación cuando se crea una nueva solicitud de extracción o si se insertan cambios en una solicitud de extracción existente destinada a la rama. A continuación, la directiva de compilación evalúa los resultados de la compilación para determinar si se puede completar la solicitud de extracción.

Importante

Antes de especificar una directiva de validación de compilación, debe tener una canalización de compilación. Si no tiene ninguna, consulte Creación de una canalización de compilación y elija el tipo de compilación que coincida con el tipo de proyecto.

Agregar directiva de compilación

Elija el botón + situado junto a Compilar validación.

Configuración de la directiva de compilación

  1. Seleccione la canalización de compilación.

  2. Opcionalmente, establezca un filtro Ruta de acceso. Obtenga más información sobre los filtros de ruta de acceso en las directivas de rama.

  3. Elija el tipo de Desencadenador. Seleccione Automático (siempre que se actualice la rama de origen) o Manual.

  4. Seleccione el requisito de directiva. Si elige Requerido, las compilaciones deben completarse correctamente para completar las solicitudes de extracción. Elija Opcional para proporcionar una notificación del error de compilación, pero permitir que se completen las solicitudes de extracción.

  5. Establezca una expiración de compilación para asegurarse de que las actualizaciones de la rama protegida no interrumpirán los cambios de las solicitudes de extracción abiertas.

    • Inmediatamente cuando branch name se actualiza: esta opción establece el estado de la directiva de compilación en una solicitud de extracción en error cuando se actualiza la rama protegida. Vuelva a poner en cola una compilación para actualizar el estado de compilación. Esta configuración garantiza que los cambios en las solicitudes de extracción se compilen correctamente incluso a medida que cambia la rama protegida. Esta opción es mejor para los equipos que tienen ramas importantes con un menor volumen de cambios. Teams trabajo en ramas de desarrollo ocupadas puede resultar perjudicial esperar a que se complete una compilación cada vez que se actualice la rama protegida.
    • Después n de horas si se branch name ha actualizado : esta opción expira el estado de la directiva actual cuando la rama protegida se actualiza si la compilación que pasa es anterior al umbral especificado. Esta opción es un riesgo entre requerir siempre una compilación cuando la rama protegida se actualiza y no requiere nunca una. Esta opción es excelente para reducir el número de compilaciones cuando la rama protegida tiene actualizaciones frecuentes.
    • Nunca: las actualizaciones de la rama protegida no cambian el estado de la directiva. Este valor reduce el número de compilaciones de la rama. Puede causar problemas al cerrar las solicitudes de extracción que no se han actualizado recientemente.
  6. Escriba un nombre para mostrar opcional para esta directiva de compilación. Este nombre identifica la directiva en la página Directivas de rama. Si no especifica un nombre para mostrar, la directiva usa el nombre de la canalización de compilación.

  7. Seleccione Guardar.

Cuando el propietario inserta los cambios que se compilan correctamente, se actualiza el estado de la directiva. Si tiene una opción Inmediatamente branch name cuando se actualiza o Después de las horas si se ha actualizado la directiva de compilación elegida, el estado de la directiva se actualiza cuando se actualiza la rama protegida si la compilación más reciente ya no es válida. n branch name

Establezca una directiva que requiera cambios en una solicitud de extracción para compilar correctamente con la rama protegida antes de que se pueda completar la solicitud de extracción. Las directivas de compilación reducen los saltos y mantienen los resultados de las pruebas. Las directivas de compilación ayudan incluso si usa la integración continua (CI) en las ramas de desarrollo para detectar problemas pronto.

Si se habilita una directiva de validación de compilación, se pone en cola una nueva compilación cuando se crea una nueva solicitud de extracción o si se insertan cambios en una solicitud de extracción existente destinada a la rama. A continuación, la directiva de compilación evalúa los resultados de la compilación para determinar si se puede completar la solicitud de extracción.

Importante

Antes de especificar una directiva de validación de compilación, debe tener una definición de compilación. Si no tiene una, consulte Creación de una definición de compilación y elija el tipo de compilación que coincida con el tipo de proyecto.

Agregar directiva de compilación

Elija Agregar directiva de compilación y configure las opciones en Agregar directiva de compilación.

Configuración de la directiva de compilación

  1. Seleccione la definición de compilación.

  2. Elija el tipo de desencadenador. Seleccione Automático (siempre que se actualice la rama de origen) o Manual.

  3. Seleccione el requisito de directiva. Si elige Requerido, las compilaciones deben completarse correctamente para completar las solicitudes de extracción. Elija Opcional para proporcionar una notificación del error de compilación, pero permitir que se completen las solicitudes de extracción.

  4. Establezca una expiración de compilación para asegurarse de que las actualizaciones de la rama protegida no interrumpirán los cambios de las solicitudes de extracción abiertas.

    • Inmediatamente cuando branch name se actualiza: esta opción establece el estado de la directiva de compilación en una solicitud de extracción en error cuando se actualiza la rama protegida. Vuelva a poner en cola una compilación para actualizar el estado de la compilación. Esta configuración garantiza que los cambios en las solicitudes de extracción se compilan correctamente incluso cuando cambia la rama protegida. Esta opción es mejor para los equipos que tienen ramas importantes con un volumen menor de cambios. Teams trabajar en ramas de desarrollo ocupadas puede resultar perjudicial esperar a que se complete una compilación cada vez que se actualice la rama protegida.
    • Después n de horas si se branch name ha actualizado : esta opción expira el estado de la directiva actual cuando la rama protegida se actualiza si la compilación que pasa es anterior al umbral especificado. Esta opción es un riesgo entre requerir siempre una compilación cuando la rama protegida se actualiza y no requiere nunca una. Esta opción es excelente para reducir el número de compilaciones cuando la rama protegida tiene actualizaciones frecuentes.
    • Nunca: las actualizaciones de la rama protegida no cambian el estado de la directiva. Este valor reduce el número de compilaciones de la rama. Puede causar problemas al cerrar las solicitudes de extracción que no se han actualizado recientemente.
  5. Escriba un nombre para mostrar opcional para esta directiva de compilación. Este nombre identifica la directiva en la página Directivas de rama. Si no especifica un nombre para mostrar, la directiva usa el nombre de definición de compilación.

  6. Seleccione Guardar.

Cuando el propietario inserta los cambios que se compilan correctamente, se actualiza el estado de la directiva. Si tiene una opción Inmediatamente branch name cuando se actualiza o Después de las horas si se ha actualizado la directiva de compilación elegida, el estado de la directiva se actualiza cuando se actualiza la rama protegida si la compilación más reciente ya no es válida. n branch name

Comprobaciones de estado

Los servicios externos pueden usar la API de estado de pr para publicar el estado detallado en las solicitudes de solicitud. La directiva de rama para servicios adicionales ofrece la posibilidad de que esos servicios de terceros participen en el flujo de trabajo de la pr. y establezcan requisitos de directiva.

Requerir que los servicios externos aprueben

Para obtener instrucciones sobre cómo configurar esta directiva, consulte Configuración de una directiva de rama para un servicio externo.

Requerir aprobación de servicios externos

Los servicios externos pueden usar la API de estado de pr para publicar el estado detallado en las solicitudes de solicitud. La directiva de rama para servicios adicionales ofrece la posibilidad de que esos servicios de terceros participen en el flujo de trabajo de la pr. y establezcan requisitos de directiva.

Requerir que los servicios externos aprueben

Para obtener instrucciones sobre cómo configurar esta directiva, consulte Configuración de una directiva de rama para un servicio externo.

Incluir automáticamente revisores de código

Seleccione revisores para directorios y archivos específicos en el repositorio.

Escriba la ruta de acceso y los revisores necesarios.

Escriba la ruta de acceso y los revisores necesarios.

Estos revisores se agregan automáticamente a las solicitudes de extracción que cambian los archivos a lo largo de esas rutas de acceso. También puede especificar un mensaje de fuente de actividad.

Agregar revisores automáticos

Agregar revisores automáticos

Si selecciona Requerido, la solicitud de extracción no se puede completar hasta que:

  • Todos los usuarios agregados como revisores de la ruta de acceso aprueban los cambios.
  • Al menos una persona de cada grupo agregado a la ruta de acceso aprueba los cambios.
  • El número de revisores especificado para cada grupo agregado a la ruta de acceso aprueba los cambios.

Los revisores necesarios se agregan automáticamente

Seleccione Opcional si desea agregar revisores automáticamente, pero no requiere su aprobación para completar la solicitud de extracción.

Puede seleccionar Permitir que los solicitantes aprueben sus propios cambios.

Puede seleccionar Los solicitantes pueden aprobar sus propios cambios.

Cuando todos los revisores necesarios aprueben el código, puede completar la solicitud de extracción.

El estado de la solicitud de extracción muestra que los revisores han aprobado

Omitir directivas de rama

En algunos casos, debe omitir los requisitos de la directiva. Omitir permite insertar cambios en la rama directamente o completar una solicitud de extracción incluso si no se cumplen las directivas de rama. Puede conceder un permiso de la lista anterior a un usuario o grupo. Puede establecer el ámbito de este permiso en un proyecto completo, un repositorio o una sola rama. Administre este permiso junto con otros permisos de Git.

En Azure DevOps Server 2019 y versiones posteriores, incluido el servicio hospedado, hay dos permisos que permiten a los usuarios omitir la directiva de rama de maneras diferentes. Las directivas de omisión al completar las solicitudes de extracción solo se aplican a la finalización de las solicitudes de extracción. Las directivas de omisión al insertar se aplican a las inserciones de un repositorio local y a las modificaciones realizadas en la Web.

Esto reemplaza al permiso único anterior.

Exento del permiso de aplicación de directivas

En TFS 2015 hasta TFS 2018 Update 2, el permiso Exento del cumplimiento de directivas permite a los usuarios con este permiso realizar las siguientes acciones:

  • Al completar una solicitud de extracción, puede optar por invalidar las directivas y completar una solicitud de extracción incluso si no se cumple el conjunto actual de directivas de rama.
  • Insertar directamente en una rama incluso si esa rama tiene establecidas directivas de rama. Tenga en cuenta que cuando un usuario con este permiso realiza una inserción que invalidaría la directiva de rama, la inserción omite automáticamente la directiva de rama sin ningún paso o advertencia de suscripción.

Importante

Tenga cuidado al conceder la capacidad de omitir la directiva, especialmente en el nivel de repositorio y proyecto. Las directivas son una piedra angular de la administración segura y compatible del código fuente.

Filtros de ruta de acceso

Varias directivas de rama ofrecen filtros de ruta de acceso. Si se establece un filtro de ruta de acceso, la directiva solo se aplicará cuando se cambien los archivos que coincidan con el filtro. Dejar este campo en blanco significa que la directiva siempre se aplicará.

Puede especificar rutas de acceso absolutas y caracteres comodín. Ejemplos:

  • /WebApp/Models/Data.cs
  • /WebApp/*
  • *.cs

Puede especificar varias rutas de acceso ; mediante como separador. Ejemplo:

  • /WebApp/Models/Data.cs;ClientApp/Models/Data.cs

Las rutas de ! acceso con prefijo se excluyen si, de lo contrario, se incluirían. Ejemplo:

  • /WebApp/*;!/WebApp/Tests/* : incluye todos los archivos de /WebApp excepto los archivos de /WebApp/Tests
  • !/WebApp/Tests/* : no especifica ningún archivo, ya que no se incluye nada primero.

El orden de los filtros es significativo. Se aplican de izquierda a derecha.

Q & A

¿Puedo insertar los cambios directamente en una rama después de configurar una directiva de rama?

No. Después de configurar una directiva de rama necesaria, no puede insertar directamente los cambios en la rama. Los cambios en la rama solo se realizan a través de solicitudes de extracción.

Nota

  • Si tiene permisos que le permiten omitir las directivas de rama, puede insertar directamente en una rama después de configurar una directiva de rama necesaria.
  • Si configuró directivas de rama opcionales, pero no directivas de rama necesarias, puede insertar los cambios directamente en una rama.

¿Qué es autocompletar?

Cuando realiza una solicitud de extracción en una rama con directivas de rama configuradas, habilita el botón Establecer autocompletar para la solicitud de extracción. Use esta opción para completarse automáticamente si no espera ningún problema con los cambios. La solicitud de extracción finalizó una vez que cumple todas las directivas.

¿Cuándo se comprueban las condiciones establecidas en las directivas de rama?

Las directivas de rama se reevaluan en el servidor a medida que se insertan los cambios y los revisores votan. Si hay una compilación desencadenada por la directiva, el estado de compilación se establece en esperando hasta que se complete la compilación.

¿Puedo usar definiciones de compilación XAML en directivas de rama?

No se pueden usar definiciones de compilación XAML en las directivas de rama.

¿Qué caracteres comodín puede usar para los revisores de código necesarios?

Asteriscos únicos ( ) y coinciden con cualquier número de caracteres, incluidas las barras diagonales ( ) y las * / barras diagonales \ (). Los signos de interrogación ( ? ) coinciden con cualquier carácter individual.

Ejemplos:

  • *.sqlhacer coincidir todos los archivos con la extensión .sql
  • /ConsoleApplication/* coincide con todos los archivos de la carpeta denominada ConsoleApplication.
  • /.gitattributes coincide con el archivo .gitattributes en la raíz del repositorio.
  • */.gitignore coincide con cualquier archivo .gitignore del repositorio.

¿Distinguen mayúsculas de minúsculas las rutas de acceso del revisor de código necesarias?

No, las directivas de rama no distinguen mayúsculas de minúsculas en este momento.

¿Cómo puedo configurar varios usuarios como revisores necesarios, pero solo es necesario que uno de ellos apruebe?

Puede agregar los usuarios a un grupo y, acontinuación, agregar el grupo como revisor. Cualquier miembro del grupo puede aprobar para que el grupo cumpla el requisito de directiva.

Tengo la exención del conjunto de permisos de directiva, ¿por qué todavía veo errores de directiva en el estado de la solicitud de extracción?

Las directivas configuradas se siguen evaluando al agregar cambios a una solicitud de extracción. Las directivas se aplican incluso para los usuarios que están exentos de la aplicación de directivas. Para los usuarios exentos, el estado de la directiva es solo de aviso y no bloquea la finalización de la solicitud de extracción.

¿Dónde puedo obtener más información sobre las configuraciones de directivas avanzadas?

Consulte la documentación de la API rest para obtener más detalles.