Che cos'è lo scaffalatura in TFS?


317

Scaffalature in TFS è solo un soft checkin in modo che altri membri del team possano vedere il codice sorgente?

cioè il codice accantonato non sarà compilato giusto?

Risposte:


453

La scaffalatura ha molti usi. I principali sono:

  1. Cambio di contesto : salvare il lavoro sull'attività corrente in modo da poter passare a un'altra attività ad alta priorità. Supponiamo che tu stia lavorando a una nuova funzionalità, pensando alla tua attività, quando il tuo capo entra e dice "Ahhh! Bug Bug Bug!" e devi rilasciare le modifiche correnti sulla funzione e andare a correggere il bug. Puoi archiviare il tuo lavoro sulla funzione, correggere il bug, quindi tornare indietro e rimodernare per lavorare sulle modifiche in seguito.
  2. Condivisione dei changeset : se desideri condividere un changeset di codice senza effettuare il check-in, puoi rendere più semplice l'accesso ad altri accantonandolo. Questo potrebbe essere usato quando si passa un'attività incompleta a qualcun altro (povera anima) o se si dispone di una sorta di codice di prova che non verrebbe MAI verificato che qualcun altro dovesse eseguire. h / t alle altre risposte sull'uso di questo per le recensioni, è un'ottima idea.
  3. Salvare i tuoi progressi : mentre lavori su una funzione complessa, potresti trovarti in un "buon punto" in cui vorresti salvare i tuoi progressi. Questo è il momento ideale per archiviare il tuo codice. Supponiamo che tu stia hackerando alcuni CSS / HTML per correggere i bug di rendering. Di solito ci batti sopra, ripetendo ogni possibile kludge a cui riesci a pensare finché non sembra giusto. Tuttavia, una volta che sembra corretto, potresti voler provare a tornare indietro per ripulire il markup in modo che qualcun altro possa essere in grado di capire cosa hai fatto prima di archiviarlo. In questo caso, puoi archiviare il codice quando tutto viene visualizzato correttamente , allora sei libero di andare e riformattare il tuo markup, sapendo che se lo rompi di nuovo accidentalmente, puoi sempre tornare indietro e ottenere il tuo changeset.

Altri usi?


16
Quando accantonando un changeset si possono o conservare le modifiche in sospeso localmente (utile per 2 o 3) o no (utile per 1)
silente

2
La documentazione di Visual Studio sugli scaffali presenta alcuni contesti aggiuntivi e informazioni.
Sviluppatore olistico

1
Viene anche utilizzato da una build Gated per archiviare le modifiche fino a quando non è possibile eseguire un commit finale.
Tore Østergaard

Una cosa che ho notato è che le modifiche allo Shelving non ripristinano necessariamente il codice, né cambiano lo stato dei file in cui effettuare il check-in. Pertanto, mentre si sta lavorando su queste modifiche ai bug, come evitare di commettere il codice di modifica dei bug insieme a il tuo codice accantonato?
Jacques,

Appena realizzato i file rimangono estratti quando si seleziona l'opzione per preservare il changeset localmente.
Jacques,

105

La scaffalatura è un modo per salvare tutte le modifiche sulla tua scatola senza effettuare il check-in. Le modifiche persistono sul server. In qualsiasi momento tu o uno dei tuoi compagni di squadra puoi "rimodernarli" su una delle tue macchine.

È ottimo anche a fini di revisione. Nel mio team per un check-in archiviamo le nostre modifiche e inviamo un'e-mail con la descrizione e il nome della modifica. Le persone del team possono quindi visualizzare il changeset e fornire feedback.

Cordiali saluti: Il modo migliore per rivedere uno scaffale è con il seguente comando

recensione tfpt / shelfet: shelfetName; userName

tfpt fa parte dei Power Tools del Team Foundation


6
va notato che oggi non ci sarebbe motivo di accantonare manualmente le modifiche e le informazioni via e-mail. Il processo moderno consiste nel richiedere una revisione del codice.
ChiefTwoPencils

34

Giusto. Se crei uno scaffale, le altre persone che fanno le ultime novità non vedranno il tuo codice.

Mette le modifiche al codice sul server, che è probabilmente il backup migliore rispetto al PC di lavoro.

Ti consente di raccogliere le modifiche su un'altra macchina, nel caso in cui sentissi il bisogno di lavorare da casa.

Altri possono vedere i tuoi scaffali (anche se penso che questo possa essere facoltativo) in modo che possano rivedere il tuo codice prima di un check-in.


Giusto. Se crei uno scaffale, le altre persone che fanno le ultime novità non vedranno il tuo codice. Significa 1) quando controllerò il codice su TFS, il membro del mio team vedrà il codice nel suo sistema se sarà aggiornato? 2) Quindi significa con quale account abbiamo archiviato il codice, dallo stesso account vedremo solo il codice accantonato? per favore correggimi se sbaglio
Krish,

Puoi vedere gli scaffali di altre persone se vuoi.
teedyay,

3
Per essere più precisi, "altre persone che ottengono un ultimo non scaricheranno il tuo codice"
sergiol

18

Un punto che manca in molte di queste discussioni è come tornare al sistema SAME su cui hai archiviato le modifiche. Forse ovvio per la maggior parte, ma non lo era per me. Credo che tu esegua un Annulla modifiche in sospeso - giusto?

Comprendo che il processo sia il seguente:

  1. Per archiviare le modifiche in corso, fai clic con il pulsante destro del mouse sul progetto, Shelve, aggiungi un nome di shelve
  2. Questo salverà (o Shelve) le modifiche al server (nessuno le vedrà)
  3. Quindi annulla le modifiche in sospeso per ripristinare il codice all'ultimo punto di check-in
  4. È quindi possibile fare ciò che è necessario fare con la linea di base del codice ripristinato
  5. Puoi annullare la visualizzazione delle modifiche in qualsiasi momento (potrebbe essere necessario un conflitto di unione)

Quindi, se vuoi iniziare qualche lavoro che potresti aver bisogno di Shelve, assicurati di effettuare il check-in prima di iniziare, poiché il punto di check-in è dove tornerai quando esegui il passaggio Annulla modifiche in sospeso sopra.


8
È possibile saltare il passaggio Annulla modifiche in sospeso se si deseleziona la casella di controllo "Conserva modifiche in sospeso localmente" durante la creazione del set di scaffali.
Michael J.

14

Mi imbatto in questo tutto il tempo, quindi informazioni supplementari riguardanti le filiali:

Se lavori con più rami, gli scaffali sono legati al ramo specifico in cui li hai creati. Quindi, se lasci che un changeset si arrugginisca troppo a lungo sullo scaffale e devi smontare da un ramo diverso, allora devi farlo con la versione di luglio degli elettroutensili.

tfpt unshelve /migrate

Fuori tema, ma vero :-)
Tore Østergaard

2
Questo commento è così vecchio che è stato aggiunto prima che fosse stabilita la risposta di overflow dello stack ettiquete :-)
joshua.ewer,

2

La scaffalatura è come se le modifiche fossero state memorizzate nel controllo del codice sorgente senza influire sulle modifiche esistenti. Significa che se si effettua il check in di un file nel controllo del codice sorgente, questo modificherà il file esistente ma lo scaffalatura è come memorizzare le modifiche nel controllo del codice sorgente ma senza modificare le modifiche effettive.


1

@JaredPar: Sì, puoi utilizzare Shelfets per le recensioni, ma tieni presente che gli scaffali possono essere sovrascritti da te stesso / dagli altri e quindi non sono stabili a lungo termine. Pertanto, per le revisioni normative pertinenti non si dovrebbe mai usare uno Shelfet come base ma piuttosto un check-in (Changeset). Per una revisione informale è ok ma non per una revisione formale (ad esempio FTA rilevante)!


0

Se stai usando build Gated, quando una build viene attivata, crea uno scaffale dello spazio di lavoro che viene inviato per la creazione. Se la compilazione fallisce, lo scaffale viene rifiutato. Se la compilazione ha esito positivo, viene creato e sottoposto a commit un TFS. In entrambi i casi, la persona che effettua il check-in / build dovrà riconciliare l'area di lavoro, che è semplice come eseguire un Get Latest.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.