Nuova versione di TF Service

E’ stata deployata dal team la nuova versione di TF Service, in questo caso con un piccolo ritardo sulla cadenza standard, perché, come detto da Brian, nel suo post, hanno avuto qualche piccolo problema in pre-produzione che è stato fixato prima del deploy.

Potete trovare una lista esaustiva delle modifiche in questo post. Molte delle modifiche sono principalmente cosmetiche, i work item risultanti da una query vengono colorati per tipo, ed è presente un po di colore in più in varie parti dell’interfaccia.

Tra le modifiche sostanziali, la prima è che la agile board è stata spostata ed è ora possibile andare a vedere la board degli sprint passati.

La modifica più interessante riguarda però i repository di tipo Git, perchè è ora possibile andare a creare più repository per un singolo team project.

image

Come si può vedere è presente un nuovo comando “Manage repositories”, che permette di gestire i repository Git associati ad un Team Project, permettendo di rinominare un repository, ma anche di crearne altri.

SNAGHTML59c707

Come mostrato in figura per ora l’integrazione con Visual Studio permette solamente di integrare il team explorer con il repository principale, ovvero con quello che ha il nome eguale al nome del Team Project, ma è comunque possibile fare un clone manuale a riga di comando e poi aprirlo normalmente con Visual Studio per lavorarci con il plugin per Git.

Se vi chiedete che url verra associata ai nuovi repository creati, basta andare nella sezione CODE e da li scegliere il repository desiderato.

image

Come potete vedere TF Service mostra correttamente l’istruzione per effettuare il clone anche dei repository aggiuntivi.

Oltre a questo sempre nella pagina di amminsitrazione dei repository Git è possibile andare a definire i livelli di permessi per i vari utenti / gruppi di TF Service

image

Buon lavoro.

Gian Maria.

1  

Errore di sincronizzazione dei Work Item con TFS 2012 Update 2

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).

Power Tools per TFS 2012 aggiornati

Potete trovare nella pagina dei power tools, l’ultima versione aggiornata, pienamente compatibile con l’Update 2. Come sempre per chi utilzza TFS, è un must download, sia nelle macchine dove è installato TFS, sia in tutte le macchine client.

Buon lavoro.

Branch per Feature (Product Backlog Item) in TFS

Talvolta si ha la necessità di sviluppare le varie funzionalità di un progetto in maniera completamente separata ed avere poi la possibilità di fare il Merge di tali funzionalità in maniera indipendente nella trunk (Main)L’unica soluzione disponibile usando il Source Control Centralizzato di TFS è utilizzare una branch per ogni Feature. Questa soluzione si rende necessaria perché non è possibile effettuare il merge di changeset non contigui, per cui è necessario che ogni funzionalità venga sviluppata in una branch separata.

Questa soluzione spesso non viene adottata perché in questo modo gli sviluppatori lamentano nel proprio Hard Disk la presenza di una copia intera di tutti i sorgenti per ogni PBI o funzionalità da sviluppare. In questo scenario le branch crescono rapidamente di numero ed è poco pratico fare il Get-Latest la mattina e vedere nel proprio HD dieci copie nuove di tutti i sorgenti perché il giorno precedente è partito lo sviluppo di un nuovo sprint.

Prima di tutto è forse superfluo, ma è bene notare, che a livello di server non esiste nessuna duplicazione di sorgenti, la branch è una operazione molto leggera, e quindi avere tante branch non appesantisce il source control. A livello di macchina dello sviluppatore invece è necessario fare un uso più corretto e intelligente del concetto di workspace. Quello che si fa solitamente è usare un workspace per ogni Team Project e mappare solamente la branch su cui si sta lavorando, come potete vedere nella figura sottostante.

image

In questo caso l’utente Keller ha mappato la branch Main del progetto FabrikamFiber nella cartella c:\ws\brian\ff. Questo mapping gli permette di scaricare solamente gli aggiornamenti di quella branch durante un Get-Latest, occupare tra meno spazio sull’HD locale ed ignorare ogni modifica che viene fatta in branch differenti.

Ora supponiamo di dover iniziare a sviluppare il PBI con Id 1435, la prima operazione da effettuare è creare la nuova branch che verrà fatta in un percorso particolare $/NomeTeamProject/Pbi/ ad indicare appunto che in questa cartella si troveranno tutte le branch delle funzionalità attive.

image

Come si può vedere si sta effettuando una normale branch della Main in $/FabrikamFiber/Pbi/1435 e si è messo un commento che spiega in maniera completa il perché della sua creazione. Una volta creata, il Source Control Explorer permette di visualizzarla, ma chiaramente in grigio, perché è fuori dal percorso mappato nel workspace. In questo caso infatti l’unico percorso mappato nel proprio HD dall’utente Keller è $/FabrikamFiber/Main e quindi non è possibile accedere alla branch appena creata.

image

Se si vuole iniziare a lavorare su questa branch, è sufficiente aprire la definizione del workspace dal Source Control Explorer e procedere a cambiare il mapping affinche la stessa cartella locale punti alla nuova branch, come mostrato nella figura sottostante.

image

Quello che è stato fatto è rimappare la cartella locale c:\ws\brian\ff sulla nuova branch, in questo modo si utilizza una sola cartella locale per mappare di volta in volta la branch su cui si sta lavorando, riducendo lo spazio occupato nel proprio HD. Appena si effettua il cambiamento Visual Studio, accorgendosi che il mapping del workspace è cambiato, propone all’utente di effettuare subito un Get Latest per aggiornare la cartella locale con la nuova cartella remota del server.

image

Rispondendo yes viene effettuato un Get Latest, il quale però procede prima a cancellare tutti i vecchi file e poi riscaricare nuovamente da zero il nuovo percorso mappato. Questo si può vedere chiaramente dalla finestra di output (replacing c:\ws\brian\ff …. ) seguito da una serie di delete dei vecchi file ed un successivo get di tutti i file dal nuovo percorso.

SNAGHTML1dda55c

Questa operazione è abbastanza logica, avendo infatti rimappato interamente una cartella locale ad un differente percorso nel server il client decide di cancellare tutto il vecchio contenuto e scaricare il nuovo. Il problema è che, essendo il nuovo percorso una branch del vecchio, ci si attenderebbe un comportamento più intelligente, che è disponibile, ma solamente da riga di comando, tramite un tf get /remap

image 

Questo comando verifica se il cambiamento di mapping è stato fatto tra due branch correlate, ed in caso affermativo verifica le differenze e procede ad effettuare solo gli aggiornamenti richiesti. Come si può vedere dalla figura sopra, dato che la branch è stata appena creata ed il contenuto è identico a quello della Main, il comando non fa assolutamente nulla dato che capisce che tutti i file sono già aggoirnati e termina immediatamente. Ora si può tranquillamente aprire la solution da c:\ws\brian\ff ed iniziare a lavorare nella nuova branch creata. Per questo esempio si sono modificati due file di Controller MVC aggiungendo un semplice commento ed è stato fatto check-in, il tutto quindi nella branch $/FabrikamFiber/Pbi/1435.

Se si ha la necessità di lavorare su di un altra funzionalità, oppure tornare a sviluppare sulla main, è sufficiente modificare nuovamente il workspace, rimappando la cartella c:\ws\brian\ff sula branch desiderata ed effettuare nuovamente un tf get /remap.

Entrambe le operazioni possono tranquillamente essere fatte da riga di comando e si può pensare di automatizzarle semplicemente in un batch, ecco ad esempio i due comandi che permettono di switchare e di tornare a sviluppare nella Main Branch.

image

Come si può vedere il comando tf workfold effettua una rimappatura della cartella locale (indicata dal unto finale) ad un nuovo percorso ed il tf get /remap che segue esegue un get verificando le differenze tra la branch mappata precedentemente e la main. Dato che erano stati modificati due file, il comando cancella entrambi questi file e li scarica dalla branch correntemente mappata, il tutto in meno di un secondo. Creando un semplice file batch chiamato SwitchToPbi.bat con queste due righe di codice

[sourcecode language='bash'  padlinenumbers='true']
tf workfold $/FabrikamFiber/Pbi/%1
tf get /remap
[/sourcecode]

si può effettuare la chiamata SwitchToPbi 1435 per cambiare velocemente la branch mappata nella cartella con la branch della feature (in questo caso la 1453) su cui si vuole lavorare.

Questa soluzione è fondamentale in progetti complessi in cui la grandezza della cartella sorgenti può essere tranquillamente di qualche centinaia di MB. In questi scenari effettuare un get completo di tutti i file ogni volta che si vuole cambiare branch di lavoro, anche se il TFS è in rete locale, è sicuramente una perdita di tempo e di risorse del sistema.

Gian Maria.

4  

Update 3 CTP ora go Live

Nel Blog di Brian è stato pubblicato il link alla CTP del Quarterly Update 3 di Visual Studio e TFS. La Go-Live significa che il pacchetto può essere installato in produzione, è infatti installato nelle macchine di produzione di Microsoft ed infatti Brian assicura che il pacchetto è installato nelle loro macchine.

Il QU3 sarà primariamente un Bugfix. In particolare se avete specifici problemi in questa pagina potrete trovare I dettagli su tutti i bugfix in essa contenuti.

Buon Lavoro.

Gian Maria.

Confrontare la struttura di due database con Visual Studio

Una delle necessità che si incontrano spesso quando si lavora con Sql Server è quella di confrontare la struttura di due database per sincronizzarli. Molti non sanno però che è sufficiente usare l’edizione Professional di Visual Studio 2012 con i Sql Server Data Tools installati.

Nel menu Sql è infatti presente una voce di menu che consente di impostare uno schema compare.

image

Come si può vedere dalla figura, è possibile specificare una normale istanza di database come sorgente e destinazione, oppure, se si lavora con i progetti di tipo Database, è possibile effettuare un confronto tra un database reale ed un progetto Database.

Il compare vi mostrerà le differenze tra i due database, con il solito Diff di Visual Studio 2012, e vi permetterà anche con un semplice click di aggiornare il database Target.

image

Sicuramente può non essere all’altezza di altri prodotti professionali che sono in circolazione da anni (senza fare nomi), però avendo Visual Studio 2012 professional o superiore vi consiglio di darci uno sguardo perchè ne vale la pena.

Gian Maria.

Il nuovo menu di connessione a TFS dell’Update2

Tra le tante novità dell’update2 vi è anche una ristrutturazione del menu di connessione a TFS, reso necessario soprattutto dal nuovo supporto a Git offerto da TF Service. Questo nuovo menu si concretizza in una icona a forma di “spinotto” presente nel Team Explorer una volta installato l’Update2.

image

Nel vecchio Team Explorer, per connettersi ad un altro TFS oppure per aprire un altro Team Project si procedeva semplicemente tramite la dropDown a fianco della dicitura HOME, la quale permetteva di cambiare Team Project (mostrando la lista di Team Project selezionata nell’ultima connessione), oppure cambiare completamente server TFS tramite il comando “connect to Team Projects”.

image

Questo menu è ora stato rimpiazzato dall’icona suddetta ed il risultato non è più l’apertura della finestra di configurazione di TFS, ma viene aperta una vista completamente nuova del Team Explorer.

image

In questa vista, come possiamo vedere dalla figura precedente, sono listati tutti i Team Project recenti su cui si è lavorato, anche su account TF Service differenti. In questo modo è possibile riconnettersi con un doppio click ai vari Team Project su cui si è lavorato recentemente, senza ripassare per la finestra di selezione del Server TFS. In alto sono comunque presenti due link, il primo è il “Configure Team Projects” che apre la usuale finestra di selezione per connettersi ad un ulteriore server TFS, e la seconda permette la creazione di un nuovo Team Project.

E’ inoltre presente una nuova sezione dedicata ai repository Git Locali, ed anche qui potete vedere come siano listati tutti i miei repository locali, sia che essi si trovino su TF Service, sia che siano collegati ad un remote di github. In questa sezione sono inoltre presenti i comandi per creare un nuovo repository Git locale, aggiungere alla lista un repository precedentemente creato al di fuori di Visual Studio (command line, GitHub tool, source tree, etc), oppure di clonare un repository Git data la sua Url.

Gian Maria.

0  

Permalink alle Virtual Machine di Brian Keller

Una delle domande più comuni è “dove posso scaricare le Virtual Machine con TFS e tutti i tool di Visual Studio ALM preinstallate cosi da provare i vari Hands On Labs?”.

Finalmente Brian Keller ha reso pubblico un permalink ufficiale dove potete trovare sempre la versione più aggiornata delle suddette macchine virtuali.

Il link è http://aka.ms/ALMVMs e per avere una experience ottimale di scaricamento è consigliato usare Free Download Manager.

Buon lavoro.

Gian Maria.

0  

Trasparenza–TF Service

Chi usa TF Service regolarmente si sarà purtroppo accorto che in questi ultimi periodi si sono avuti un po di problemi di stabilità.

La ragione di questo è dovuto ad una grande ristrutturazione dell’architettura del servizio, ed è veramente interessante la spiegazione molto trasparente e dettagliata che Brian Harry da di questo problema

Sprint 45 Service Issues.

L’aspetto più interessante è la grande trasparenza con cui il team parla dei problemi avuti e di come sono stati risolti ed affrontati.

Il post è un po lunghetto, ma è decisamente interessante da leggere :) .

Gian Maria.

0  

Continuous Deployment – Questo sconosciuto

Tra le pratiche più utili per la gestione di un progetto sicuramente si trova il Continuous Deployment, ovvero avere il proprio progetto rilasciato automaticamente in un server di test o di QA. I vantaggi di questo approccio sono molteplici, in primo luogo ridurre i problemi in fase di rilascio, dato che il processo è automatizzato.

Grazie a Windows Azure ottenere il Contnuous Deployment di applicazioni Web è semplice questione di pochi click, ma con poco lavoro è comunque possibile supportare anche altri scenari, come la pubblicazione automatica di un progetto Click-Once su Windows Azure Blob Storage.

Il consiglio che do sempre, è quello di “provarci” e tentare di automatizzare il più possibile le operazioni di rilascio, invece di accettare passivamente che il deploy “è un bagno di sangue”.

Le pratiche di Continuous Deployment si collocano infine in quell’area, da noi ancora purtroppo piuttosto oscura e grigia, che va sotto il nome di DevOps, di cui Matteo ha parlato in precedenti post come “DevOps per principianti Intellitrace alla riscossa”.

Se siete interessati sull’argomento vi consiglio la visione di qualche video del recente ALM Summit che potete trovare qui (Channel 9 Video of DevOps Track )

Gian Maria.

Comments Off