Non è possibile eseguire uno tf get
senza un'area di lavoro. Il motivo è che il server deve conoscere la mappatura tra i percorsi del server e i percorsi locali.
Se si lavora con un gran numero di file, non è una buona idea:
- Creare & Eliminare una nuova area di lavoro ogni volta
- Oppure, creare una nuova area di lavoro (e poi mai cancellarlo)
La ragione di ciò è che ogni volta che si esegue uno Get
, il server tiene traccia di quali file, con quali versioni sono stati scaricati in quale area di lavoro. Se non si puliscono mai questi spazi di lavoro, la tabella che memorizza queste informazioni crescerà nel tempo.
Inoltre, se si sta creando & eliminando un'area di lavoro in qualsiasi momento, il server deve scrivere tutte queste righe, quindi eliminarle quando si è terminato. Questo non è necessario.
Si dovrebbe davvero provare e riutilizzare lo stesso spazio di lavoro ogni volta. Se lo fai, il server è molto efficiente nell'inviare solo i file che sono cambiati dall'ultima volta che li hai scaricati.Anche se la tua build si sta spostando da un ramo all'altro, puoi usare tf get /remap
che a volte è più efficiente se le filiali condividono file comuni.
Sebbene non risolva il problema, è possibile elencare file e scaricare file senza un'area di lavoro.
Per elencare i file:
tf dir $/Product/Main/Project1 /R
Per scaricare un file:
tf view $/Product/Main/Project1/file.cs
Con un file batch creativo, è possibile stringa di questi due insieme con un comando FOR
. Tuttavia, raccomanderei innanzitutto di provare a risolvere il problema del workspace, poiché questo è il modo in cui TFS è stato progettato per essere utilizzato.
fonte
2011-01-17 16:17:00
Ok, sembra che il percorso di minor resistenza sia controllare il codice in uno spazio di lavoro stabile, quindi copiare il codice da lì nelle directory di lavoro dello script di build. –
hai pensato di impegnarti nella proposta di alm stackexchange dello studio visivo? http://area51.stackexchange.com/proposals/15894/visual-studio-alm?referrer=VS9uwfDzMKasH8mQCaDCxQ2 –
Questa soluzione è più pulita poiché implica solo ottenere (non sono necessarie operazioni di spostamento dei file): http://stackoverflow.com/questions/10624031/how-to-perform-a-tfs-get-to-a-a-current-directory-path-ignoring-works –