[TFS.eX] Lavorare offline: il source control
Facendo il consulente sono quasi sempre offline vuoi perchè:
- Il cliente per policy non mi da accesso alla rete;
- il cliente mi da accesso alla rete (internet) ma blocca le VPN quindi non accedo a quello che mi serve della rete dell'ufficio;
- L'UMTS di Vodafone è un furto legalizzato ;-)
- La rete dell'uffico, raramente ma succede, è giù...
Vi ho già parlato dell'uso che si può fare di Groove quindi non vi tedierò oltre anche perchè la configurazione è di Groove è di una semplicità disarmante, mentre per la parte server il white paper che ho linkato è esaustivo.
Oggi ho approcciato invece la necessità di avere a disposizione offline il Source Control, e direte be mi sembra il minimo....si certo ma non è detto che sia una cosa scontata
SourceControl
Questa è l'area che per ora fornisce il supporto più raw al lavoro offline, il team explorer non offre nessuna funzionalità per il lavoro offline e ci sono una serie di trick da mettere in pista per cercare almeno di lavorare sereni:
- Disabilitare da registro una malefica impostazione di Visual Studio che fa si che all'apertura l'IDE cerchi di connettersi sempre a TFS: [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\TeamFoundation]
"AutoLoadServer"=dword:00000000
La modifica del registro è a vostro rischio e pericolo ;-)
E qui troviamo le prime carenze, all'apertura della solution, se siamo off-line, non ci viene chiesto se vogliamo lavorare off-line o meno ma ci vengono ritornati un po' di errori di connessione e poi una form che ci chiede se vogliamo lavorare temporaneamente senza source control o se vogliamo rimuovere i binding con il TFS... naturalmente la scelta deve ricadere sulla prima opzione ;-)
Fatto questo lavoriamo normalmente, quasi come se fossimo connessi, non avremo più le dialog per il check-out ma in fase di salvataggio l'IDE ci informerà che il file (se era in check-in) è in sola lettura e se vogliamo sovrascriverlo, diciamo di si.
- Una volta che siamo nuovamente connessi alla rete e il TFS è raggiungibile riapriamo la solution su cui abbiamo lavorato off-line. per sincronizzare le modifiche eseguite off-line utilizziamo un tool da riga di comando (compreso nei Power Tool di TFS):
TFPT.exe online /deletes /exclude:Obj,Bin,*.CodeAnalysisLog.xml,*.lastcodeanalysissucceeded,*.suo,*.user,*.bak,*.temp,*.tmp
Eseguendolo nella directory in cui c'è la solution su cui abbiamo lavorato il power tool esguirà tutti i check-out e le altre operazioni al fine di replicare sul TFS quello che abbiamo fatto. Ho sottolineato replicare perchè è fondamentale capire che il tool riesegue i passi come se li avessimo fatti noi on-line quindi nella history del changeset ci ritroveremo tutto, con gli orari un po' sballati ma comunque nella sequenza corretta
- Prima di eseguire qualsisasi cosa il tool vi mostra una bella dialog con l'elenco delle operazioni che farà, da li potete modificare quello che volete;
- Dopo che ha eseguito tutte le operazioni siete sempre e comunque in check-out quindi nulla è ancora sul server e questo è un'ulteriore paracadute fondamentale;
.m