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)
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)
Jawaban:
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/"
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!
C:\temp\shelveset-name
(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:
c:\temp\shelveset-name
harus diganti namanya agar sesuai dengan cabang baru. Tip: Pastikan Anda menyalin ke tempat yang benar !!!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.
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. :)
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
Langkah-langkah berikut dapat digunakan untuk rak ukuran kecil (~ 20 file atau kurang).