[Step by Step] Lavorare con Team Foundation Server in modalità Offline (1a parte)

Team Foundation Server è costituito da una serie di Web Services realizzati in ASP.NET e si appoggia a SQL Server Reporting Services e a Windows Sharepoint Services per poter funzionare. Questo significa che se non abbiamo una connessione diretta con il server non è possibile accedere alle funzionalità in maniera diretta.

Il client di Team Foundation Server (chiamato Team Explorer) non è in grado di lavorare completamente in modalità Offline. In questo post si vedrà come riuscire comunque a interagire con tutte le componenti di Team Foundation Server anche quando non si dispone di un collegamento continuo.

Utilizzeremo sia Team Explorer 2005, sia Team Explorer 2008, mostrando le differenze delle due versioni.

Disabilitazione del Logon automatico a Team Foundation Server

Il Team Explorer è predisposto per collegarsi automaticamente all’ultimo Team Foundation Server a cui ci si era collegati, quando Visual Studio viene lanciato, utilizzando le credenziali dell’utente Windows, oppure le ultime credenziali inserite e memorizzate nel sistema.

Questo è molto comodo quando si lavora collegati al server, ma potrebbe diventare scomodo se si passa molto tempo disconnessi, per via del ritardo nell’apertura di Visual Studio in attesa che la connessione vada in timeout e dei messaggi d’errore (in Figura 1 quello del Team Explorer 2005, in Figura 2 quello del Team Explorer 2008):

Figura 1

Figura 1 – Visual Studio 2005

Figura 2

Figura 2 – Visual Studio 2008

Per ovviare a quest’inconveniente è possibile intervenire sul Registry, per disabilitare il collegamento automatico.

Il Team Explorer 2005 utilizza le seguente chiave di registro:

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\TeamFoundation]

Mentre Team Explorer 2008 utilizza questa:

[HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\TeamFoundation]

In entrambi i casi, per disabilitare il collegamento automatico bisogna impostare “AutoLoadServer” (creandola come DWORD nel caso non fosse presente) a 0.

Attenzione: modificare il Registry comporta il rischio di compromettere il funzionamento del proprio computer, e quindi bisogna procedere con l’opportuna cautela, effettuando in ogni caso un back-up del Registry stesso prima delle modifiche (ad esempio seguendo questa guida).

Per collegarsi a Team Foundation Server bisognerà quindi utilizzare la procedura che generalmente si utilizzerebbe per il primo collegamento, o per selezionare altri Team Project (come mostrato in Figura 3 e in Figura 4):

image

Figura 3

image

Figura 4

Gestione Offline del Version Control (Visual Studio 2005 con Team Explorer 2005)

Quando si cerca di aprire un progetto o una soluzione che era sotto Version Control e Team Foundation Server non è disponibile, il Team Explorer 2005 ci avvisa con due messaggi d’errore (Figure 5 e 6) e ci permette di selezionare se continuare a lavorare temporaneamente senza Version Control, o se rimuoverlo permanentemente (Figura 7)

Figura 5

Figura 5

Figura 6

Figura 6

Figura 7

Figura 7

Se si seleziona di lavorare temporaneamente senza Version Control, Visual Studio non mostrerà più le icone nel Solution Explorer che indicavano quali file erano in Check Out e quali no. L’unico indicatore resta il lucchetto sul file che indica che il file è in sola lettura (Figura 8).

Figura 8

Figura 8

Se si modifica il file al momento del salvataggio Visual Studio richiederà se si vuole salvarlo con un altro nome o sovrascriverlo. Scegliendo di sovrascriverlo Visual Studio rimuoverà l’attributo di sola lettura del file (Figura 9).

Figura 9

Figura 9

A questo punto, per poter “riconciliare” la modifica locale con le eventuali modifiche sul server bisogna usare uno dei Power Tools di Team Foundation Server. I Power Tools sono strumenti non supportati ufficialmente ma che sono disponibili gratuitamente sul sito Microsoft (link per il download in lingua Inglese).

I Power Tools installano una serie di estensioni all’IDE di Visual Studio, e un comando da lanciare usando il prompt chiamato TFPT. Conviene aggiungere al Path di sistema la cartella contenente il TFPT.EXE per poterlo usare da qualsiasi sottocartella.

Quando ci si ricollega alla rete, o quando Team Foundation Server torna disponibile bisogna invocare il comando TFPT ONLINE, il sottocomando di TFPT che serve per riconciliare le modifiche fatte quando si era Offline.

Il comando TFPT ONLINE va lanciato da una cartella appartenente al Workspace di Team Foundation Server attivo (Figura 10).

Figura 10

Figura 10

E’ possibile specificare una serie di file o estensioni da escludere, nel nostro caso abbiamo lanciato:

TFPT.exe online /deletes /exclude:Obj,Bin,*.CodeAnalysisLog.xml,*.lastcodeanalysissucceeded,*.suo,*.user,*.bak,*.temp,*.tmp

che oltre a escludere alcuni file che non serve portare online controlla anche se abbiamo cancellato alcuni file in locale e li cancella dal Workspace sul server.

Se si specifica l’opzione /adds verranno selezionati (in Figura 11) automaticamente anche i file aggiunti, altrimenti saranno presenti nella schermata ma deselezionati di default.

Se il comando viene lanciato (come in questo caso) senza l’opzione /noprompt, viene mostrata una schermata grafica che permette di vedere la modifica e di selezionare quali modifiche tenere e quali scartare (Figura 11).

Figura 11

Figura 11

A questo punto i file sono riconciliati con il Workspace corrente. Bisogna però ricordarsi di fare Check In da Visual Studio (o da riga di comando), altrimenti i file rimangono pendenti all’interno del Workspace (Figura 12).

image

Figura 12

Se quando si era Offline i file sono stati modificati da altre persone, allora bisognerà fare il Merge delle modifiche.

Come si vede il Power Tool Online permette di gestire i casi di cambiamenti, aggiunte e cancellazione di file.

L’unico caso che non viene gestito direttamente è quando si rinomina un file, perché questa operazione è vista come l’aggiunta del nuovo e la cancellazione del vecchio.

Gestione Offline del Version Control (Visual Studio 2008 con Team Explorer 2008)

Il Team Explorer 2008 tra le varie novità include anche l’integrazione all’interno dell’IDE del Power Tool Online.

Vediamo quindi cosa cambia ripetendo le stesse operazioni già svolte con il Team Explorer 2005.

Quando il Team Foundation Server non è più raggiungibile, Team Explorer 2008 non va in errore, ma mostra una schermata che permette solamente di andare in modalità Offline (non è possibile come si vede in Figura 13 rimuovere definitivamente l’associazione con il Version Control, che andrà fatta dall’apposito menu).

Figura 13

Figura 13

Anche in questo caso Visual Studio non mostra più le icone dello stato del Version Control vicino ai file, e l’unica indicazione rimane l’attributo di sola lettura sui file, come già mostrato in precedenza (Figura 8). Il comportamento rimane lo stesso anche al salvataggio, con la richiesta di sovrascrivere il file precedente (Figura 9).

Cambia però il comportamento quando si dispone di nuovo del collegamento a Team Foundation Server.

Al posto di utilizzare TFPT ONLINE, è sufficiente selezionare il comando Go Online sul progetto o sulla soluzione (Figura 14).

Figura 14

Figura 14

Visual Studio mostrerà una schermata simile a quella del Power Tool, che permette di riconciliare le modifiche (Figura 15).

Figura 15

Figura 15

Anche in questo caso le modifiche verranno riconciliate all’interno del Workspace e sarà necessario un Check In per portarle sul server.

Figura 16

Figura 16

Il comando Go Online esclude già i file non necessari, e controlla la presenza di file aggiunti o cancellati, ma non gestisce quando i file vengono rinominati.

Il comando Go Online non dispone delle opzioni presenti nel Power Tool Online perché è legato bidirezionalmente alla soluzione corrente, ignorando automaticamente tutti i file non mappati nella soluzione.

Se si ha bisogno di riconciliare un intero Workspace, oppure progetti non gestiti da Visual Studio 2008 è necessario utlizzare il Power Tool Online per Team Foundation Server 2008 (disponibile qui, in lingua inglese).

 

Fine prima parte.

Lorenzo