2010-02-09 4 views
12

Attualmente sto lavorando su un progetto che utilizza TFS come controllo del codice sorgente. Sono nel mezzo dell'implementazione di una funzionalità, ma sono bloccato dal lavoro che deve essere eseguito da risorse esterne. Poiché la funzionalità non è completa, non posso verificare le modifiche senza interrompere la creazione. Quindi, invece di aspettare un paio di giorni mentre il blocco è terminato, voglio lavorare su alcuni difetti.Scaffalatura vs aree di lavoro in TFS

Per eseguire questo lavoro separatamente dalle altre modifiche, sto lavorando sui difetti in un secondo spazio di lavoro appena creato.

Dopo aver utilizzato un secondo spazio di lavoro per isolare le mie modifiche, un collega mi ha chiesto perché non ho appena accantonato le mie modifiche. Dopo aver fatto qualche lettura sugli scaffali, sembra che questa sia la soluzione preferita per situazioni come la mia. La mia domanda è quali situazioni, se ce ne sono, creeresti più spazi di lavoro e quali situazioni dovresti usare scaffalature? Ci sono alcuni post su shelving, ma non vedo molto sul tema degli spazi di lavoro.

A proposito, ho avuto l'idea di creare un secondo spazio di lavoro here.

risposta

11

Una nuova filiale sarebbe probabilmente il modo migliore per andare. Ma, per rispondere alla tua domanda, una delle principali differenze tra gli scaffali e l'utilizzo di uno spazio di lavoro differnet è che quando tieni un riparo, reinserisci il tuo codice in TFS, quindi viene eseguito il backup. Qualsiasi cosa ci sia nel tuo spazio di lavoro è proprio quello che hai sul tuo computer - se lo perdi, non c'è più.

Usiamo molto la ramificazione nel mio negozio e, di conseguenza, non ho visto molti usi per scaffalature.

Tuttavia, ho trovato un caso in cui mi è stato molto utile: Spesso rimbalzo tra 2 diverse macchine di sviluppo (una in ufficio, una a casa, collegata tramite VPN). Se sto lavorando su qualcosa, e voglio trasferirlo da casa a lavoro, o viceversa, uso spesso scaffalature. Posso accantonarlo da una macchina e non accantonarlo dall'altra. Lo faccio quando sono nel bel mezzo di una modifica e il check-in interromperà la compilazione o interromperà altrimenti altri sviluppatori.

+0

Ah, quindi dovrei almeno accantonare le mie modifiche sul mio spazio di lavoro originale per eseguire il backup delle modifiche. Inoltre, buon punto sull'utilizzo di scaffalature per spostare le modifiche tra PC. Ho potuto vedere che è molto utile. – JChristian

1

La scaffalatura è l'opzione ideale. La scaffalatura consente di apportare modifiche in massa in TFS al di fuori della build normale e recuperarle in un secondo momento. Più spazi di lavoro non sono una soluzione per quello che stai facendo. Molteplici spazi di lavoro sono utili se si mantengono versioni diverse di un prodotto e si deve lavorare su di essi, ad es. diciamo che hai un prodotto 4.0 e un 5.0 e devi applicare una correzione di sicurezza per entrambe le versioni. La scaffalatura è ottima quando si desidera apportare modifiche, ma non impegnarle immediatamente.

+0

Non è utilizzata la ramificazione per lavorare su più versioni? O un individuo avrebbe uno spazio di lavoro separato per ogni ramo? – JChristian

+0

Sì, ma si dovrebbero utilizzare aree di lavoro diverse per raggiungere ciascun ramo. –

3

Stai parlando di due concetti completamente diversi qui. Quando si accantona il codice, lo si salva in TFS, ma non lo si registra in nessun ramo specifico. La creazione di un diverso spazio di lavoro imposta semplicemente una nuova cartella locale sulle macchine di sviluppo e salva i file nel tuo ramo. Quando effettui il check-in, potresti comunque avere conflitti.

Perché non creare un nuovo ramo del codice. Puoi lavorare su quel ramo e fare il check-in senza calpestare le modifiche di qualcun altro, perché stai effettuando il check-in sul tuo ramo personale del codice. Quindi, quando hai completato le modifiche e gli altri hanno completato le loro sul ramo principale, puoi unire le modifiche nel ramo principale.

+0

Non avevo pensato di creare un altro ramo. Stai suggerendo che avrei dovuto creare un secondo ramo per la funzionalità bloccata su cui stavo lavorando e quindi utilizzare il ramo principale per lavorare sui difetti? – JChristian

+1

@JChristian - Non sto dicendo che dovresti avere. Ma un'alternativa sarebbe stata creare una succursale su cui lavorare o sulle risorse esterne su cui lavorare, e poi unirle insieme una volta terminato. L'ho fatto spesso quando ho lavorato alla prossima versione di un'app, se le modifiche che sto per apportare alla versione attuale sono significative e volevo lavorare su di esse in modo isolato. –