Apa itu Shelving di TFS?

317

Apakah rak di TFS hanyalah checkin lunak sehingga anggota tim lainnya dapat melihat kode sumber?

yaitu kode yang disimpan tidak akan dikompilasi kan?

Matthew Lock
sumber

Jawaban:

453

Rak memiliki banyak kegunaan. Yang utama adalah:

  1. Pengalihan Konteks : Menyimpan pekerjaan pada tugas Anda saat ini sehingga Anda dapat beralih ke tugas prioritas tinggi lainnya. Katakanlah Anda sedang mengerjakan fitur baru, mengurus bisnis Anda sendiri, ketika bos Anda masuk dan berkata, "Ahhh! Bug Bug Bug!" dan Anda harus menghapus perubahan saat ini pada fitur dan pergi memperbaiki bug. Anda dapat mengesampingkan pekerjaan Anda pada fitur, memperbaiki bug, lalu kembali dan lepaskan dua belas untuk mengerjakan perubahan Anda nanti.
  2. Berbagi Perubahan : Jika Anda ingin membagikan perubahan kode tanpa memeriksanya, Anda dapat memudahkan orang lain untuk mengakses dengan menyimpannya. Ini dapat digunakan ketika Anda memberikan tugas yang tidak lengkap kepada orang lain (jiwa yang malang) atau jika Anda memiliki semacam kode pengujian Anda tidak akan pernah PERNAH memeriksa bahwa orang lain perlu dijalankan. h / t terhadap tanggapan lain tentang penggunaan ini untuk ulasan, itu adalah ide yang sangat bagus.
  3. Menyimpan kemajuan Anda : Saat Anda mengerjakan fitur yang rumit, Anda mungkin menemukan diri Anda pada 'titik bagus' di mana Anda ingin menyimpan kemajuan Anda. Ini adalah waktu yang ideal untuk menyimpan kode Anda. Katakanlah Anda meretas beberapa CSS / HTML untuk memperbaiki bug rendering. Biasanya Anda menggedornya, mengulangi setiap kemungkinan lumpur yang dapat Anda pikirkan sampai terlihat benar. Namun, setelah itu terlihat benar, Anda mungkin ingin mencoba dan masuk kembali untuk membersihkan markup Anda sehingga orang lain mungkin dapat memahami apa yang Anda lakukan sebelum Anda memeriksanya. Dalam hal ini, Anda dapat menyimpan kode ketika semuanya ditampilkan dengan benar , maka Anda bebas untuk pergi dan refactor markup Anda, mengetahui bahwa jika Anda tidak sengaja merusaknya lagi, Anda selalu dapat kembali dan mendapatkan perubahan Anda.

Ada kegunaan lain?

TJB
sumber
16
Saat menyimpan perubahan, seseorang dapat menyimpan perubahan yang tertunda secara lokal (berguna untuk 2 atau 3) atau tidak (berguna untuk 1)
dumbledad
2
The Visual dokumentasi Studio di rak memiliki beberapa konteks tambahan dan bagaimana informasi.
Pengembang Holistik
1
Ini juga digunakan oleh build Gated untuk menyimpan perubahan sampai komit akhir dapat dilakukan.
Tore Østergaard
Satu hal yang saya perhatikan adalah bahwa perubahan Shelving tidak serta merta mengembalikan kode, juga tidak mengubah status file yang akan diperiksa. Jadi, sementara Anda sedang mengerjakan ini misalnya perubahan bug, bagaimana Anda menghindari melakukan kode perubahan bug bersama dengan kode rak Anda?
Jacques
Baru sadar file-file itu tetap diperiksa ketika Anda memilih opsi untuk menyimpan set perubahan secara lokal.
Jacques
105

Shelving adalah cara untuk menyimpan semua perubahan di kotak Anda tanpa memeriksa. Perubahan tersebut tetap ada di server. Kapan saja Anda atau rekan satu tim Anda dapat "melepaskan dua belas" mereka kembali ke salah satu mesin Anda.

Ini juga bagus untuk tujuan ulasan. Di tim saya untuk pemeriksaan, kami menyimpan perubahan kami dan mengirimkan email dengan deskripsi perubahan dan nama perubahan tersebut. Orang-orang di tim kemudian dapat melihat perubahan dan memberikan umpan balik.

FYI: Cara terbaik untuk meninjau sebuah shelveset adalah dengan perintah berikut

tfpt review / shelveset: shelvesetName; userName

tfpt adalah bagian dari Power Tools Tim Foundation

JaredPar
sumber
6
Perlu dicatat bahwa tidak ada alasan hari ini untuk secara manual menyimpan perubahan dan info email. Proses modern adalah meminta tinjauan kode.
ChiefTwoPencils
34

Betul sekali. Jika Anda membuat rak, orang lain yang mendapatkan informasi terbaru tidak akan melihat kode Anda.

Ini menempatkan perubahan kode Anda ke server, yang mungkin didukung lebih baik daripada PC kantor Anda.

Ini memungkinkan Anda mengambil perubahan di komputer lain, seandainya Anda merasakan keinginan untuk bekerja dari rumah.

Orang lain dapat melihat rak Anda (meskipun saya pikir ini opsional) sehingga mereka dapat meninjau kode Anda sebelum check-in.

Teedyay
sumber
Betul sekali. Jika Anda membuat rak, orang lain yang mendapatkan informasi terbaru tidak akan melihat kode Anda. Ini berarti 1) ketika saya akan memeriksa kode ke TFS maka anggota tim saya akan melihat kode di sistemnya jika dia akan mendapatkan yang terbaru? 2) Jadi artinya dengan akun mana kita telah menyimpan kode, dari akun yang sama hanya kita yang akan melihat kode yang disimpan? tolong perbaiki saya jika saya salah
Krish
Anda dapat melihat rak orang lain jika Anda mau.
teedyay
3
Agar lebih akurat, "orang lain yang melakukan mendapatkan terbaru tidak akan mengunduh kode Anda"
sergiol
18

Satu hal yang terlewatkan dalam banyak diskusi ini adalah bagaimana Anda mengembalikan kembali ke mesin SAMA di mana Anda menyimpan perubahan Anda. Mungkin jelas bagi kebanyakan orang, tetapi tidak bagi saya. Saya yakin Anda melakukan Undo Unding Changes - benarkah itu?

Saya memahami prosesnya sebagai berikut:

  1. Untuk menangguhkan perubahan yang tertunda saat ini, klik kanan proyek, Shelve, tambahkan nama rak
  2. Ini akan menyimpan (atau Shelve) perubahan ke server (tidak ada yang akan melihatnya)
  3. Anda kemudian lakukan Undo Pending Changes untuk mengembalikan kode Anda kembali ke titik check-in terakhir
  4. Anda kemudian dapat melakukan apa yang perlu Anda lakukan dengan baseline kode yang dikembalikan
  5. Anda dapat Membatalkan Pisahkan perubahan setiap saat (mungkin memerlukan beberapa gabungan konflik)

Jadi, jika Anda ingin memulai beberapa pekerjaan yang mungkin harus Anda selesaikan, pastikan Anda check-in sebelum mulai, karena titik check-in adalah tempat Anda akan kembali ketika melakukan langkah Undo Pending Changes langkah di atas.

Nick Wright
sumber
8
Anda dapat melewati langkah undo pending changes jika Anda mengosongkan kotak centang "Pertahankan perubahan yang tertunda secara lokal" saat membuat set rak.
Michael J.
14

Saya menemukan ini sepanjang waktu, jadi informasi tambahan mengenai cabang:

Jika Anda bekerja dengan banyak cabang, rak rak diikat ke cabang tertentu tempat Anda membuatnya. Jadi, jika Anda membiarkan karat perubahan pada rak terlalu lama dan harus melepaskan cabang ke cabang yang berbeda, maka Anda harus melakukannya dengan rilis Juli dari alat-alat listrik.

tfpt unshelve /migrate
joshua.ewer
sumber
Di luar topik, tetapi benar :-)
Tore Østergaard
2
Komentar ini sangat lama ditambahkan sebelum stack overflow answer
ettiquete
2

Shelving seperti perubahan Anda telah disimpan dalam kontrol sumber tanpa mempengaruhi perubahan yang ada. Berarti jika Anda mengecek file dalam kontrol sumber itu akan memodifikasi file yang ada tetapi rak seperti menyimpan perubahan Anda dalam kontrol sumber tetapi tanpa memodifikasi perubahan yang sebenarnya.

Tuan N. Das
sumber
1

@JaredPar: Ya, Anda dapat menggunakan Shelvesets untuk ulasan tetapi perlu diingat bahwa shelvesets dapat ditimpa oleh Anda sendiri / orang lain dan karenanya tidak stabil dalam jangka panjang. Oleh karena itu untuk ulasan yang relevan dengan peraturan, Anda tidak boleh menggunakan Shelveset sebagai basis melainkan sebagai checkin (Changeset). Untuk tinjauan informal, itu baik-baik saja tetapi tidak untuk ulasan formal (Misalnya yang relevan dengan FTA)!

Daniel
sumber
0

Jika Anda menggunakan build Gated, ketika build dipicu, itu membuat rak dari ruang kerja Anda yang dikirimkan untuk build. Jika build gagal, shelveset ditolak. Jika build berhasil, set perubahan dibuat dan berkomitmen untuk TFS. Dalam kedua acara tersebut, orang yang melakukan check-in / build tersebut harus merekonsiliasi ruang kerja, yang sesederhana melakukan Get Latest.

Jim Roth
sumber