May 2013 Blog Posts

Se dovete migrare un grosso repository Git a Team Foundation Server, e’ molto probabile che vi scontrerete contro uno dei problemi piu’ comuni quandi si migra un DVCS verso un centralizzato: capire il ciclo di vita delle branch.

Brevemente, in un DVCS non si ha il concetto di branch che si trova in un VCS come quello di TFS, a causa della natura distribuita, che tende ad avere un numero di branch maggiore, e che permette relazioni fra le branch differenti [molti parent per un’unica child]. Questa struttura non e’ migrabile in Team Foundation Server, che e’ invece un VCS centralizzato e gerarchico.

Si puo’ raggiungere un buon compromesso utilizzando Git-Tf, il tool Microsoft per migrare Git a Team Foundation Server. Dopo aver configurato il repository, si deve eseguire il comando git-tf checkin –deep per replicare ogni changeset invece di un grosso unico commit. Ma si otterra’ un errore:

image

Ecco cosa intendo: se si hanno piu’ parent per una branch figlia,  non si puo’ replicare in Team Foundation Server. Se si effettua un rebase, si modifica la history, e quindi non sarebbe molto corretto da un punto di vista di fedelta’ del dato

Quindi? Si deve utilizzare il comando –autosquash, che andra’ a creare una storia lineare senza modificarla. Come? Analizza le HEAD revision per trovare quella piu’ “vicina” alla branch parent gerarchica. Ovviamente non tutte le gerarchie possono essere replicate da Git a TFS, ma questa soluzione permette un buon livello di fedelta’ alla soluzione originale.

Dopo aver installato Team Foundation Server 2012 Update 2 puo’ succedere che il Work Item Tracking Synchronization Service improvvisamente si blocchi, e che quindi non si vedano piu aree ed iterazioni aggiornate in Visual Studio, Web Access, Excel, etc.

Questi sono i sintomi…

error

image

Ovviamente per fare troubleshooting di questo bug, i log della pagina amministrativa _oi sono essenziali:

image  Vediamo che da un certo momento in poi, un certo numero di job Work Item Tracking Integration Synchronization falliscono…

image …e nella Job History Details troviamo un System.NullReferenceException. Ecco il problema!

Nella RC del Team Foundation Server 2012 Update 3 troviamo una fix  per questo, come dettagliato nel changelog (paragrafo Work Item Tracking nelle fix per Team Foundation Server).

Con Team Foundation Server 2012 il licensing e’ stato estremamente semplificato, in modo da avere un percorso di adozione piu’ chiaro per le feature impattate. Un grande esempio di questo e’ il nuovo Web Access.

Il nuovo Team Web Access mette a disposizione tre livelli di accesso alle informazioni, dipendenti dalla CAL che si ha:

clip_image001

Questi tre livelli espongono un set di informazioni (e di feature) differenti per l’utente.

clip_image002

Un utente che accede al Web Access con un livello Limited avra’ piu’ o meno la stessa esperienza di utilizzo della vecchia modalita’ Work Item Only View in Team System Web Access. Questo utente accedera’ a tutti I work item che gli appartengono senza la necessita’ di una CAL.

 

clip_image003

Il livello Standard e’ per chi ha un Visual Studio 2012 Professional, ed aggiunge tutte le funzionalita’ standard del Web Access oltre alle Board agili introdotte con la versione 2012.

clip_image004

Infine il livello Full e’ per chi ha un Visual Studio 2012 Premium o superior, ed abilita tutte le feature del Web Access, quindi anche il Backlog Management, il Feedback Management e – con l’Update 2 – il Web Test Case Management.

Nonostante siano presenti sin dalla RTM, i metastati sono diventati noti al grande pubblico dopo l’introduzione della Kanban Board. Perche’? Vediamo…

clip_image002

New, Approved, Committed e Done sono metastati. Ne avete mai sentito parlare prima d’ora? Direi di no :)

Non sono niente di particolare, ma solo un aggregatore di stati per i Work Item Type. I metastatic sono definiti all’interno del Process Template ovviamente, nel nostro caso solo per i Work Item di tipo Product Backlog Item:

 clip_image003

Come vediamo, possiamo avere un Work Item in stato Proposed che puo’ essere New o Approved.

Questo e’ l’esempio piu’ semplice, ma ad esempio e’ possibile customizzare la board per mostrare piu’ metastati, farci dei report, e molto altro.