Dapatkah saya memisahkan diri ke cabang lain di tfs 2008?


105

Mari kita asumsikan bahwa beberapa pengembang di tim saya menyimpan perubahannya seperti yang dia lakukan di cabang A. Dan saya bekerja di cabang B. Dapatkah saya memisahkan perubahannya ke cabang B? (Dengan GUI atau command prompt)


Demo perintah di atas: Unshelve command basics
Rohit

Jawaban:


129

The Visual Studio Power Tools harus membiarkan Anda melakukan hal ini.

C:\src\2\Merlin\Main>tfpt unshelve /?
tfpt unshelve - Unshelve into workspace with pending changes

Allows a shelveset to be unshelved into a workspace with pending changes.
Merges content between local and shelved changes. Allows migration of shelved
changes from one branch into another by rewriting server paths.

Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup]
                     [/migrate /source:serverpath /target:serverpath]

 shelvesetname          The name of the shelveset to unshelve
 /nobackup              Skip the creation of a backup shelveset
 /migrate               Rewrite the server paths of the shelved items
                        (for example to unshelve into another branch)
 /source:serverpath     Source location for path rewrite (supply with /migrate)
 /target:serverpath     Target location for path rewrite (supply with /migrate)
 /nobackup              Skip the creation of a backup shelveset

Misalnya untuk menggabungkan kumpulan rak yang disebut "Nama Set Rak" yang dibuat di Branch1 ke Branch2 gunakan ini:

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"

2
Ooohhh ... Curt, kurasa kau baru saja membuat hariku. Saya harus mencobanya nanti.
Herms

Dari mana Anda mendapatkan alat-alat listrik?
Guy

3
Ya, alat-alat listrik HARUS membiarkan Anda melakukan ini, tetapi sayangnya penggabungan berjalan sangat salah setiap kali sehingga hampir tidak berguna.
Tim Booker

Penggabungan tidak seburuk itu. Saya menemukan bahwa Penggabungan Otomatis berfungsi di 90% kasus.
Justin Rudd

2
Baru mencobanya. Saya memindahkan banyak file di dalam rak dan sayangnya ini sepertinya tidak berfungsi dengan baik. Anda perlu "memigrasi" semua file ini secara manual (juga tidak ada pilihan banyak). Dan kemudian mereka ditambahkan sebagai file baru ke ruang kerja. Saya tidak dapat menggunakannya, karena saya tidak dapat menggabungkannya lagi.
Stefan Steinegger

34

Solusi alternatif untuk tfpt yang menghindari harus menggabungkan setiap file secara manual

Masalah dengan alat listrik tfs adalah Anda melakukan 'penggabungan tanpa dasar' jadi harus mengonfirmasi setiap file . Saya memiliki rak lebih dari 800 file dan saya tidak pernah mempercayai tombol 'penggabungan otomatis' dan tidak ingin memeriksa setiap file secara bergantian - jadi saya harus mencari cara lain!

  • Unduh dan pasang TFS Shelveset Sidekick .
  • Alat tersebut muncul di bawah 'Alat' di VS2010
  • Jalankan alat 'Shelveset Sidekick', klik Search untuk menampilkan rak
  • Klik kanan pada rak Anda dan pilih 'Ekspor Rak'
  • Simpan ke lokasi kosong seperti C:\temp\shelveset-name
  • Sekarang memiliki struktur direktori lengkap yang berisi HANYA file baru

(Catatan: Tidak ada bilah kemajuan saat mengekspor - jadi jika Anda memiliki rak besar yang membutuhkan waktu lama untuk mengekspor, Anda hanya perlu memeriksa di Windows Explorer (File> Properti> Ukuran) bahwa file masih turun jika Anda pikir itu beku).

Anda sekarang hanya perlu menyalinnya ke cabang baru dengan Windows Explorer.

Ini berhasil untuk saya:

  • Memeriksa seluruh solusi terlebih dahulu (di cabang baru)
  • Tutup solusi itu
  • Gunakan TFS offline dari dalam VS ( Alat untuk melakukan ini ) - lihat di bawah mengapa ini penting ...
  • Salin file di Windows Explorer. Struktur direktori di c:\temp\shelveset-nameharus diganti namanya agar sesuai dengan cabang baru. Tip: Pastikan Anda menyalin ke tempat yang benar !!!
  • Hadirkan VS online
  • Ini harus menemukan semua perubahan dan menambahkan file baru
  • Jika Anda diminta untuk mengikat kontrol sumber, pastikan untuk memverifikasi jalur yang benar untuk cabang baru.
  • Uji - lalu check in file baru

Penting: Saya telah menemukan bahwa jika Anda tidak terlebih dahulu menggunakan TFS offline maka Anda akan mendapatkan file baru (dari kumpulan perubahan unshelves Anda) yang ditampilkan tanpa tanda centang merah kecil dan Anda harus mengecualikan dan memasukkannya lagi agar mereka menambahkan. Jika ada yang punya solusi alternatif untuk masalah ini, saya ingin tahu - menyegarkan sepertinya tidak berhasil.


Metode ini lebih mudah untuk rak yang lebih besar dan yang saya ikuti. Terima kasih!
Ani

Metode ini benar-benar lebih baik untuk rak yang lebih besar
Aamir

Anda bisa lolos tanpa menggunakan TFS secara offline. Tapi saya tidak yakin itu sepadan. Apa yang saya lakukan adalah menjalankan tindakan Bandingkan - di Penjelajah Kontrol Sumber dari menu konteks yang terbuka di folder yang relevan. Satu dapat memfilter keluaran untuk hanya menampilkan item yang berbeda. Kemudian memungkinkan untuk melakukan beberapa pilihan pada mereka dan Memeriksa semuanya sekaligus. Tapi saya rasa menggunakan TFS offline lebih cepat dan sederhana dari itu.
tandai

Sayangnya, ini tidak berhasil untuk saya ketika saya harus "menambahkan" perubahan di rak. Saya mendapatkan pesan kesalahan "Gagal mengambil file yang disimpan. Diperlukan perubahan tertunda di rak pada file".
John Saunders

@JohnSaunders Anda maksud shelveset dengan setiap menambahkan atau eksklusif menambahkan? Saya tidak perlu melakukan ini selama bertahun-tahun :)
Simon_Weaver

1

Informasi rak mencakup jalur spesifik yang dituju. Sayangnya saya tidak tahu cara otomatis untuk unshelve ke lokasi mana pun selain yang disimpan di rak. Saat saya ingin melakukan ini, saya harus memeriksa file yang setara di cabang baru, terpisah dari cabang lama, lalu menyalin file tersebut secara manual.

EDIT: Yah, saya kira saya melakukannya dengan cara yang sulit. Saya harus mencoba solusi Curt. :)


0

Saya menghabiskan banyak waktu untuk menyelesaikan ini dan saya memiliki beberapa masalah untuk diatasi. Ini mungkin tetapi di sini beberapa masalah dan beberapa aturan yang harus diikuti untuk menghindari masalah ini

Kesalahan:

tidak dapat menentukan ruang kerja

Masalah khusus ini diselesaikan dengan menjalankan perintah dari folder akar cabang sumber . Ini bertentangan dengan beberapa jawaban di SO di mana mereka mengatakan untuk menggunakan cabang "target" - tidak, gunakan "sumber":

cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"

Masalah kedua muncul setelah ini. Tampaknya itu tidak dapat terhubung ke server TFS. Apa yang saya sadari, saya memiliki beberapa VS diinstal dan terhubung ke server TFS yang berbeda. Saya menggunakan VS12 dan saya memiliki ruang kerja dan koneksi server. Tetapi saya tidak menyadari bahwa koneksi yang sama perlu direplikasi di VS13 agar TFPT2013 berfungsi. Ini terhubung ke server dan ruang kerja yang sama.

Saya juga mencoba melakukannya menggunakan TFPT2015 tetapi saya menginstalnya dan tidak menginstal TFPT.exe sehingga tidak berguna. Jadi saya mencoba dari TFPT2013 ke TFS2015 dan berhasil untuk perintah khusus ini. Saya bertanya-tanya, mengapa tidak, jika VS12 / 13 berfungsi dengan baik terhadap TFS2015?

Untuk meringkas

  • Gunakan CMD atau DevCMD - tidak masalah
  • jalankan perintah dari folder akar cabang sumber
  • verifikasi koneksi Team Explorer Server untuk VS tertentu
  • TF Power Tools 2013 bekerja dengan TFS v15, setidaknya opsi migrasi berfungsi

0

Langkah-langkah berikut dapat digunakan untuk rak ukuran kecil (~ 20 file atau kurang).

  1. Di rak dan cabang target, mulailah dengan meminta semua pembaruan yang tertunda diperiksa atau dibatalkan.
  2. Di cabang kumpulan rak, pisahkan file dari kumpulan rak yang berlaku.
  3. Di cabang target, periksa file apa pun yang ada yang ada di rak yang tidak disimpan.
  4. Bandingkan file yang tidak terselubung di cabang rak dengan yang ada di cabang target untuk mengidentifikasi file yang memerlukan pembaruan penggabungan (jika ada).
  5. Jika perlu, buat pembaruan gabungan secara manual ke file yang berlaku dari langkah sebelumnya dan simpan file ini di ruang kerja cabang target.
  6. Salin file shelveset lainnya dari ruang kerja cabang shelveset ke ruang kerja cabang target.
  7. Bandingkan file baru yang diperbarui di ruang kerja cabang target dengan file yang diperiksa. Lakukan koreksi sesuai kebutuhan.
  8. Periksa file baru yang diperbarui di cabang target.
  9. Rollback file yang tidak terselesaikan di cabang shelveset.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.