Definición de la configuración inicial de Git y TFVC

Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2013

Importante

Este artículo se aplica a la personalización de proyectos para los modelos de proceso XML locales. Para obtener información general sobre los modelos de proceso, consulte Personalización de la experiencia de seguimiento de trabajo.

Nota

Para TFS 2017.3 y versiones posteriores, se crean proyectos desde el portal web, que omite este complemento. En su lugar, los permisos predeterminados se establecen para los grupos de seguridad de nivel de proyecto y de nivel de colección. Después de crear un proyecto, puede administrar los permisos o directivas de protección de TFVCdesde el portal web.

Mediante el complemento para el control de versiones, puede configurar los permisos de seguridad iniciales de un proyecto, las directivas de des check-out y las notas de la protección.

En el archivo XML, puede especificar una o más tareas y sus dependencias. Por lo general, solo es necesaria una tarea para configurar el control de versiones. Para obtener un ejemplo de una tarea que especifica esta configuración, vea el archivo VersionControl.xml que se define para las plantillas de proceso predeterminadas.

Los nombres del archivo, la carpeta y el complemento para las plantillas de proceso predeterminadas son los siguientes:

Nombre de archivo:VersionControl.xml
Nombre de carpeta:Control de versiones
Nombre del complemento:Microsoft.ProjectCreationWizard.VersionControl

Puede cambiar el nombre del archivo XML y el de la carpeta, pero no el del complemento. El sistema no incluye un mecanismo para la implementación de complementos del lado cliente, directivas u otras modificaciones. Si desea implementar este tipo de funcionalidad, debe utilizar su propio programa de instalación y distribución.

Desprotección exclusiva

Puede controlar si varias personas pueden desalar un archivo al mismo tiempo especificando el exclusive_checkout elemento .

<exclusive_checkout required=""/>  

Si el atributo necesario se establece en true,solo una persona puede desasalar un archivo a la vez. Si este atributo se establece en false,varias personas pueden desenlaizar un archivo al mismo tiempo y deben conciliar los cambios al comprobar el archivo.

En el ejemplo siguiente se muestra cómo requerir desprotección exclusiva:

<exclusive_checkout required="true"/>  

Obtener la última versión al desprotegerlo

Use el elemento get_latest_on_checkout para configurar el comportamiento predeterminado cuando un usuario desvía un archivo para un proyecto.

<get_latest_on_checkout required=""/>  

Si el atributo necesario se establece en true,la versión más reciente de un elemento, o sugerencia, se descarga cada vez que un usuario lo comprueba. Este comportamiento es similar al comportamiento de des check-out en Visual SourceSafe.

Si el atributo necesario se establece en false,la operación de des check-out comprobará la versión local en el área de trabajo. De manera predeterminada, este atributo está establecido como False.

En el ejemplo siguiente se muestra cómo especificar que el comportamiento de desprotección predeterminado sea el de obtener la versión más reciente de un elemento cuando un usuario lo desprotege.

<get_latest_on_checkout required="true"/>  

Notas de inserción en el repositorio

El desarrollador proporciona notas de protección cuando protege el código. Estas notas describen si los cambios de código están relacionados con procesos del equipo y, si es así, de qué forma. Por ejemplo, una nota de protección puede indicar si el cambio se realizó debido a una revisión de seguridad. Además, la nota puede incluir detalles sobre los cambios relativos a la revisión de seguridad.

Use la siguiente sintaxis para un elemento checkin_note.

<checkin_note label="" required="" order=""/>  

En la tabla siguiente se describen los atributos del elemento checkin_note.

Atributo Descripción
etiqueta La etiqueta que describe la nota de inserción en el repositorio. La etiqueta aparece en el cuadro de diálogo Comprobaciones pendientes cuando un usuario comprueba un cambio.
requerido Especifica si la nota de protección debe tener un valor. Si este atributo se establece en true, la nota de inserción en el repositorio debe tener un valor. Si se establece en false, el valor es opcional.
orden Especifica un número ordinal para indicar en qué orden se deben mostrar las notas de protección. Este atributo es opcional.

En el ejemplo siguiente se muestra cómo crear una nota de protección adicional con la etiqueta "Impacto en la documentación", que no es necesario que tenga un valor.

<taskXml>  
   <checkin_note label="Code Reviewer" required="false" order="1"/>  
   <checkin_note label="Security Reviewer" required="false" order="2"/>  
   <checkin_note label="Performance Reviewer" required="false" order="3"/>   
   <checkin_note label="Documentation Impact" required="false"/>  
</taskXml>  

Permisos

El control de versiones tiene un conjunto específico de permisos que se pueden configurar para una plantilla de proceso. Al especificar permisos, se definen las acciones que los grupos de seguridad y los individuos pueden realizar en los elementos que están bajo control de versiones. Para obtener más información, vea Control del acceso a las áreas funcionales.

Las asignaciones predeterminadas para los permisos TFVC y GIt realizados a todas las plantillas de proceso predeterminadas son las que se muestran. Puede establecer estos permisos después de crear el proyecto desde la interfaz de usuario web, consulte Set Git repository permissions (Establecer permisos de repositorio de Git) o Set TFVC repository permissions (Establecerpermisos de repositorio tfvc).

<?xml version="1.0" encoding="utf-8"?>
<tasks>
  <task id="VersionControlTask" name="Create Version Control area" plugin="Microsoft.ProjectCreationWizard.VersionControl" completionMessage="Version control Task completed.">
    <dependencies />
    <taskXml>
      <permission allow="Read, PendChange, Checkin, Label, Lock, ReviseOther, UnlockOther, UndoOther, LabelOther, AdminProjectRights, CheckinOther, Merge, ManageBranch" identity="[$$PROJECTNAME$$]\$$PROJECTADMINGROUP$$" />
      <permission allow="Read, PendChange, Checkin, Label, Lock, Merge" identity="[$$PROJECTNAME$$]\Contributors" />
      <permission allow="Read, PendChange, Checkin, Label, Lock, Merge" identity="[$$PROJECTNAME$$]\Build Administrators" />
      <permission allow="Read" identity="[$$PROJECTNAME$$]\Readers" />
      <exclusive_checkout required="false" />
      <get_latest_on_checkout required="false" />
      <git>
        <permission allow="GenericRead, GenericContribute, Administer, CreateBranch, CreateTag, ManageNote" identity="[$$PROJECTNAME$$]\$$PROJECTADMINGROUP$$" />
        <permission allow="GenericRead, GenericContribute, CreateBranch, CreateTag, ManageNote" identity="[$$PROJECTNAME$$]\Contributors" />
        <permission allow="GenericRead, GenericContribute, CreateBranch, CreateTag, ManageNote" identity="[$$PROJECTNAME$$]\Build Administrators" />
        <permission allow="GenericRead" identity="[$$PROJECTNAME$$]\Readers" />        
      </git>
    </taskXml>
  </task>
</tasks>