Le labels sono uno strumento molto utilizzato, ma la cui gestione non é sempre molto chiara.
Apparentemente non é possibile avere label con nome duplicato all'interno dello stesso team project:
se creo una label di nome paperino sul file $/pippo/x.cs
e cerco di creare un'altra label con lo stesso nome sul file $/pippo/y.cs
il secondo file verrà semplicemente aggiunto alla label esistente (di cui verrà fatto l'update dei commenti).
Questo comportamento non é solo a livello di Team Explorer, ma anche dall'Object Model:
se chiamo, con gli opportuni parametri, il metodo VersionControlServer.CreateLabel due volte otterrò come risposta rispettivamente: LabelResultStatus.Created e LabelResultStatus.Updated (se da Team Eplorer capisco e sottoscrivo, da OM questo comportamento vi confesso che per me é un boccone un po' amaro).
All'apparenza potremmo pensare che le label siano univoche per nome. Niente di più falso (non a caso nell'Object Model c'é la proprietà VersionControlLabel.LabelId).
Basta andare con Team Explorer in un altro Team Project e creare una label con lo stesso nome e ciò sarà possibile senza difficoltà:
ad esempio posso ancora creare una label di nome paperino sul file $/pluto/z.cs
A questo punto potremmo pensare che le label siano univoche per nome all'interno dello stesso TeamProject, ma anche qui saremmo in errore:
di per se le Label sono oggetti "cross-teamproject" in quanto é possibile creare una label aggiungendovi files da diversi teamprojects (basta che apriate i details della label e aggiungiate un file da un altro teamproject).
Conclusione: Team System tende a riutilizzare label con lo stesso nome finché queste hanno file all'interno dello stesso TeamProject, ma é comunque possibile creare label con nomi duplicati.
Le mie considerazioni personali: per quanto questo comportamento sembri "stonato" é probabilmente il migliore che si potesse avere:
- Che senso hanno due label con lo stesso nome all'interno dello stesso teamproject? Come fa un utente a distinguerne una dall'altra?
- Perché dovrei impedire che esistano due label con lo stesso nome in Team Projects differenti (magari gestiti da team differenti)?
- Perché non dovrei poter creare una label cross-teamproject (pensate ad un team che lavora su una suite di programmi)?
...forse l'unico piccolo dettaglio: sarebbe bello avere un feedback da Team Explorer nel caso di una label esistente e lasciare scegliere all'utente se aggiornarla o modificare il nome della nuova label.