Le buone pratiche di uso del source control indicano che è consigliabile inserire nel VCS tutti i file che possono essere necessari per una build. Questo implica che andremo ad includere anche file binari, tools, eseguibili, che naturalmente occupano spazio nel db.
La tipica situazione è quella di tutti gli assembly delle librerie dipendenti, ad esempio supponiamo di avere il file Castle.Core.Dll nella cartella Dependencies. Durante lo sviluppo questo file verrà aggiornato seguendo le release della libreria e questo aggiornamento può avvenire anche spesso se si ha l’abitudine di lavorare con le trunk delle librerie open source. Quello che accade però è che stiamo occupando spazio nel database per file che probabilmente non sono più necessari.
In Tfs è presente il comando tf destroy che permette di cancellare definitivamente gli elementi dal VCS.
Ad esempio se io voglio tenere solamente l’ultima versione di un file binario potrei scrivere
tf destroy /keephistory /collection:http://WIN-GS9GMUJITS8/tfs/defaultcollection /preview "$/Tailspin Toys/Main/Dependencies/Castle.Core.dll"
L’output di questo comando è il seguente
in/Dependencies/Castle.Core.dll"
Do you want to destroy $/Tailspin Toys/Main/Dependencies/Castle.Core.dll and all
of its children? (Yes/No) y
Destroyed: $/Tailspin Toys/Main/Dependencies/Castle.Core.dll
Il risultato è questo, quando andiamo a fare un get latest del file non abbiamo nessun problema, ma se tentiamo di recuperare una vecchia versione
Figura 1: Tentando di recuperare un elemento dalla history che non è l’ultimo, si ha un errore, perchè gli elementi sono stati completamente rimossi dal database del source control.
Quindi abbiamo ottenuto il nostro scopo, liberare spazio nel source control, ma mantenere l’ultima versione.
alk.
Tags: Tfs VCS