“Get Latest Version” da command line: assicurarsi di usare il tf.exe corretto
Per voi che, lavorando seriamente, utilizzate TFS come source control, vi potrebbe tornare utile sapere che è possibile effettuare tutta una serie di operazioni dalla command-line, sia essa il classico command prompt del DOS, piuttosto che PowerShell. A quale scopo? Per automatizzarle, per esempio, perchè per certi versi è più comodo fare doppio click su uno script già bello pronto, piuttosto che aprire Visual Studio, raggiungere il Source Control Explorer, e poi cliccare dal menù contestuale la voce Get Latest Version (GLV).
Vi rimando a questa pagina per maggiori informazioni.
E’ possibile fare davvero di tutto: gestire check-out e check-in, ottenere informazioni sul proprio workspace, gestire i branch, aggiungere/rimuovere nuovi file o cartelle, consultare i pending changes, e molto altro ancora.
Quella che serviva a me, per velocizzarmi il lavoro, è quello di effettuare il GLV. Ci sono diverse sintassi per farlo; quella che utilizzo io è forse la più semplice:
CD C:TFSNomeAppNomeBranch %ExeTf% get "$/Nomeapp/NomeBranch" /recursive
E’ possibile aggiungere il parametro “/preview” per simulare un GLV senza però sovrascrivere le cartelle ed i file del proprio workspace locale.
Sappiate che potreste incappare in un errore di esecuzione che tra le altre cose dice: “Unable to determine the workspace using TF.exe“. E’ segnalato in tantissime pagine sul web, compresa questa su StackOverflow. Troverete tantissime soluzioni; forse l’errore più comune e frequente è che TF.exe va eseguito da una cartella già mappata nei percorsi locali di TFS. Ecco il motivo per cui io nel mio script ho inserito un comando CD prima di eseguirlo. In più bisogna assicurarsi di usare i parametri giusti nello script che riportano username, password (oppure un utente di dominio), e così via.
Nel mio caso la questione era ancora più subdola. Sul mio HD il file TF.exe è presente in più copie, forse una per ciascuna versione di Visual Studio installata.
Il primo si trova qui: “C:Program Files (x86)Microsoft Visual Studio2017EnterpriseCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam Explorer”. Un secondo invece si trova in “C:Program Files (x86)Microsoft Visual Studio 12.0Common7IDE”.
E’ assolutamente necessario lanciare il TF.exe corretto, altrimenti continuerete a ricevere lo stesso errore.
Se utilizzate Visual Studio 2017 Enterprise Edition, insomma, va lanciato il primo. Tornando allo script iniziale, ho banalmente valorizzato la variabile %ExeTf% come “C:Program Files (x86)Microsoft Visual Studio2017EnterpriseCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam Explorer f.exe” ed il gioco è fatto.