Pregunta

Si he creado una etiqueta en TFS, asignándola a varios archivos, mis compañeros de trabajo no pueden cambiar las versiones de los archivos (ni agregar otros archivos) a esa etiqueta. Recibimos este error:

TF14077: The owner of a label cannot be changed. 

Al investigar el problema, encontré este artículo , que dice:

  

Es posible que un usuario pueda ser   permitido manipular una etiqueta compartida   en la carpeta de desarrollo pero solo   manipular las etiquetas que poseen en una   Carpeta de producción.   (énfasis mío)

Por más que lo intente, no puedo encontrar ninguna referencia a " etiquetas compartidas " ;. Por lo que puedo ver, una etiqueta debe tener un propietario.

FWIW, lo que estoy tratando de hacer es emplear un " flotante " Etiqueta para que los desarrolladores puedan indicar que su código está listo para formar parte de la compilación etiquetándolo con una etiqueta en particular. Entonces, el proceso de compilación solo necesitaría obtener todo lo que tiene esa etiqueta, y obtener automáticamente las cosas más recientes que realmente están listas para construirse, ignorando tanto las versiones anteriores como las nuevas que no están listas para el horario estelar.


Actualización: Me imagino que si no puedo crear una etiqueta verdaderamente compartida, al menos puedo dar a los usuarios el derecho de editar las etiquetas creadas por sus compañeros de trabajo. Esto es bastante explícitamente compatible. Los usuarios habituales de Contributor no tienen este derecho, pero de acuerdo con MSDN (vea el artículo Team Foundation Server Permissions , bajo Source Control Permissions ), se puede otorgar mediante el permiso LabelOther :

  

Los permisos de control de fuente son   específico a los archivos de código fuente y   carpetas Puede establecer estos permisos   haciendo clic derecho en la carpeta o archivo   en Source Control Explorer, haciendo clic   Propiedades, y en la pestaña Seguridad,   seleccionando el usuario o grupo para el cual   quieres cambiar permisos, y   a continuación, editar los permisos enumerados en   Permisos. Puedes configurar estos   permisos mediante el uso de la tf   utilidad de línea de comandos para la fuente   control.

...

  

Administrar etiquetas | tf: LabelOther | Los usuarios que tienen este permiso pueden editar o eliminar las etiquetas creadas por otro usuario.

Así que he asignado ese derecho al grupo de Dominio que contiene a todos los desarrolladores, como se sugirió anteriormente. Puedo verificar que está configurado con el comando tf permission :

tf permission /group:"CORP\Web Team"

y el resultado es el esperado (también asigné Label, solo por diversión)

===============================================================================
Server item: $/Test1/TeamBuildTypes (Inherit: Yes)
  Identity: CORP\Web Team
    Allow:
    Deny:
    Allow (Inherited): Label, LabelOther
    Deny (Inherited):

Sin embargo, a mi usuario de prueba aún no se le permite editar una etiqueta que creé.

¿Fue útil?

Solución 2

Nunca pude hacer este trabajo con etiquetas. En su lugar, diseñamos un proceso completamente diferente utilizando la ramificación, que ahora recomiendo encarecidamente a cualquiera que lea esto.

Establecemos un esquema de bifurcación para que exista una rama de desarrollo general; a partir de eso, cada desarrollador tiene su propia rama con la que puede hacer lo que quiera, y hay una rama de producción.

  • Los desarrolladores hacen su " sucio " trabaje en su sucursal privada sin temor a liberar cosas accidentalmente, o incluso interferir con sus compañeros de trabajo.
  • Cuando tienen algo listo para integrarse, combinan los cambios en la rama de desarrollo. Hacemos compilaciones continuas allí y probamos los resultados.
  • Cuando una compilación integrada está totalmente probada y lista para su implementación, los cambios se fusionan en la rama de producción. Esto se construye y se implementa.

Dije que quería

  

lo que estoy tratando de hacer es emplear un   " flotante " etiqueta para que los desarrolladores   Puede indicar que su código está listo.   para formar parte de la construcción mediante el etiquetado   con una etiqueta particular.

El esquema que describí anteriormente logra esto y mucho más.

Otros consejos

¿Los juegos de estanterías serían una mejor solución para lo que está haciendo? IIRC hay una API bastante rica para trabajar con conjuntos de archivado, como cometerlos como parte de un proceso de compilación (u otro).

Encontré que las etiquetas en TFS eran muy limitadas cuando lo usé.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top