Domanda
Se ho creato un'etichetta in TFS, assegnandola a più file, i miei colleghi non possono modificare le versioni dei file (né aggiungere altri file) a quella etichetta. Viene visualizzato questo errore:
TF14077: The owner of a label cannot be changed.
Studiando il problema, ho trovato questo articolo , che afferma:
È possibile che un utente possa esserlo autorizzato a manipolare una etichetta condivisa nella cartella di sviluppo ma solo manipolare le etichette che possiedono in a cartella di produzione. (sottolineatura mia)
Prova come potrei, non riesco a trovare alcun riferimento a " etichette condivise " ;. Per quanto posso vedere, un'etichetta deve avere un proprietario.
FWIW, quello che sto cercando di fare è utilizzare un "floating" etichetta in modo che gli sviluppatori possano indicare che il loro codice è pronto per entrare a far parte della build taggandolo con una particolare etichetta. Quindi il processo di compilazione dovrebbe solo avere tutto ciò che ha quell'etichetta e ottenere automaticamente le cose più recenti che sono effettivamente pronte per essere costruite, ignorando sia le versioni precedenti che quelle più recenti che non sono pronte per la prima serata.
Aggiornamento: Immagino che se non riesco a creare un'etichetta veramente condivisa, posso almeno dare agli utenti il ??diritto di modificare le etichette create dai loro colleghi. Questo è abbastanza esplicitamente supportato. Gli utenti regolari Collaboratore non hanno questo diritto, ma in base a MSDN (vedere l'articolo Autorizzazioni di Team Foundation Server , in Autorizzazioni di controllo del codice sorgente ), può essere concesso tramite l'autorizzazione LabelOther :
Le autorizzazioni per il controllo del codice sorgente sono specifico per i file di codice sorgente e cartelle. È possibile impostare queste autorizzazioni facendo clic con il tasto destro sulla cartella o sul file in Explorer controllo sorgente, facendo clic su Proprietà e nella scheda Sicurezza, selezionando l'utente o il gruppo per il quale si desidera modificare le autorizzazioni e quindi modificando le autorizzazioni elencate in Autorizzazioni. Puoi impostare questi permessi usando il tf utilità da riga di comando per sorgente controllo.
...
Amministra etichette | tf: Etichetta altro | Gli utenti che dispongono di questa autorizzazione possono modificare o eliminare le etichette create da un altro utente.
Quindi ho assegnato quel diritto al gruppo Dominio che contiene tutti gli sviluppatori, come suggerito sopra. Posso verificare che sia impostato usando il comando autorizzazione tf :
tf permission /group:"CORP\Web Team"
e il risultato è come previsto (ho anche assegnato Label, solo per divertimento)
===============================================================================
Server item: $/Test1/TeamBuildTypes (Inherit: Yes)
Identity: CORP\Web Team
Allow:
Deny:
Allow (Inherited): Label, LabelOther
Deny (Inherited):
Tuttavia, al mio utente di prova non è ancora consentito modificare un'etichetta che ho creato.
Soluzione 2
Non sono mai stato in grado di farlo funzionare con le etichette. Invece, abbiamo ideato un processo completamente diverso usando la ramificazione, che ora consiglio vivamente a chiunque legga questo.
Abbiamo istituito uno schema di ramificazione in modo che esista un ramo di sviluppo generale; da ciò, ogni sviluppatore ha il suo ramo con il quale può fare quello che vuole, e c'è un ramo di produzione.
- Gli sviluppatori fanno il loro "sporco" lavorano nella loro filiale privata senza timore di rilasciare accidentalmente cose o addirittura interferire con i loro colleghi.
- Quando hanno qualcosa pronto per l'integrazione, uniscono le modifiche nel ramo di sviluppo. Facciamo build continue lì e testiamo i risultati.
- Quando una build integrata è completamente testata e pronta per la distribuzione, le modifiche vengono unite al ramo di produzione. Questo è costruito e distribuito.
Avevo detto che volevo
quello che sto cercando di fare è assumere a & Quot flottante quot; etichetta in modo che gli sviluppatori può indicare che il loro codice è pronto diventare parte della build mediante tag con un'etichetta particolare.
Lo schema che ho delineato sopra raggiunge pienamente questo e altro.
Altri suggerimenti
I set di scaffali sarebbero una soluzione migliore per quello che stai facendo? IIRC esiste un'API abbastanza ricca per lavorare con set di scaffali come commetterli come parte di un processo di compilazione (o altro).
Ho trovato le etichette in TFS molto limitate quando l'ho usato.