TFS 2008'de farklı bir şubeye açılabilir miyim?


105

Ekibimdeki bazı geliştiricilerin, onun A dalında yaptığı değişiklikleri rafa kaldırdığını varsayalım. B dalında da yaptığı değişiklikleri rafa kaldırabilir miyim? (GUI veya komut istemi ile)


Yukarıdaki komutun demosu
Rohit

Yanıtlar:


129

Visual Studio Elektrikli El Aletleri bunu bildirmeniz gerekir.

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

Örneğin, Branch1'de oluşturulan "Raf Kümesi Adı" adlı bir raf kümesini Branch2'ye birleştirmek için şunu kullanın:

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

2
Ooohhh ... Curt, sanırım günümü yeni geçirdin. Bunu daha sonra denemem gerekecek.
Herms

Elektrikli aletleri nereden alıyorsunuz?
Adam

3
Evet, elektrikli aletler bunu yapmanıza izin VERMELİDİR, ancak maalesef birleştirme her seferinde korkunç derecede yanlış gidiyor, bu yüzden neredeyse yararsız oluyor.
Tim Booker

Birleşme o kadar da kötü değil. Otomatik Birleştirme'nin vakaların% 90'ında çalıştığını buldum.
Justin Rudd

2
Sadece denedim. Raf setindeki birçok dosyayı taşıdım ve maalesef bu pek iyi çalışmıyor. Tüm bu dosyaları manuel olarak "taşımanız" gerekir (ayrıca çoklu seçim yoktur). Ve sonra çalışma alanına yeni dosyalar olarak eklenirler. Kullanamıyorum çünkü artık birleştiremiyorum.
Stefan Steinegger

34

Her dosyayı manuel olarak birleştirmek zorunda kalmadan tfpt'ye alternatif çözüm

Tfs güç aracıyla ilgili sorun, 'temelsiz birleştirme' yapıyor olmanızdır , bu nedenle her dosyayı onaylamanız gerekir . 800 dosyadan oluşan bir raf setim vardı ve "otomatik birleştirme" düğmesine asla güvenmedim ve sırayla her dosyaya gitmek istemedim - bu yüzden başka bir yol bulmalıydım!

  • TFS Shelveset Sidekick'i indirin ve kurun .
  • Araç, VS2010'da "Araçlar" altında görünür
  • 'Shelveset Sidekick' aracını çalıştırın, rafları göstermek için Ara'yı tıklayın
  • Raf setinize sağ tıklayın ve 'Raf Setini Dışa Aktar'ı seçin
  • Gibi boş bir yere kaydedin C:\temp\shelveset-name
  • Şimdi SADECE yeni dosyaları içeren eksiksiz bir dizin yapısına sahip olun

(Not: Dışa aktarırken ilerleme çubuğu yoktur; bu nedenle, dışa aktarılması uzun süren büyük bir raf kümeniz varsa, yalnızca Windows Gezgini'nde (Dosya> Özellikler> Boyut) dosyaların hala aşağı gelip gelmediğini kontrol etmeniz gerekir. donmuş olduğunu düşünüyorum).

Artık bunları Windows Gezgini ile yeni şubeye kopyalamanız yeterlidir.

Bu benim için çalıştı:

  • Önce tüm çözümü kontrol etmek (yeni dalda)
  • O çözümü kapat
  • TFS'yi VS içinden çevrimdışına alın ( Bunu yapmak için araç ) - bunun neden önemli olduğunu aşağıya bakın ...
  • Windows Gezgini'nde dosyaları kopyalayın. İçindeki dizin yapısının c:\temp\shelveset-nameyeni şubeye karşılık gelecek şekilde yeniden adlandırılması gerekecektir. İpucu: Doğru yere kopyaladığınızdan emin olun !!!
  • VS'yi çevrimiçi hale getirin
  • Tüm değişiklikleri bulmalı ve yeni dosyaları eklemelidir
  • Kaynak kontrolünü bağlamanızı isterse, yeni dal için yolun doğru olduğundan emin olun.
  • Test edin - ve ardından yeni dosyaları kontrol edin

Önemli: Önce TFS'yi çevrimdışına almazsanız, küçük bir kırmızı onay işareti olmadan görünen tüm yeni dosyalar (raftan çıkarma değişiklikler grubunuzdan) ile karşılaşacağınızı ve bunları hariç tutup tekrar dahil etmeniz gerektiğini öğrendim. eklemelerini sağlamak için. Herhangi birinin bu soruna alternatif bir çözümü varsa bilmek isterim - tazeleme işe yaramıyor gibi görünüyor.


Bu yöntem daha büyük raflar için daha kolaydır ve benim takip ettiğim yöntemdir. Teşekkürler!
Ani

Bu yöntem, daha büyük raflar için gerçekten daha iyi
Aamir

TFS'yi çevrimdışına almadan kurtulabilirsiniz. Ama buna değip değmeyeceğinden emin değilim. Yaptığım şey, ilgili klasörde açılan bağlam menüsünden Kaynak Kontrol Gezgini'nde Karşılaştır eylemini çalıştırmaktı. Çıktı, yalnızca farklı olan öğeleri gösterecek şekilde filtrelenebilir. Daha sonra bunlar üzerinde birden fazla seçim yapmanıza ve hepsini aynı anda Kontrol Etmenize olanak tanır. Ama sanırım TFS'yi çevrimdışına almak bundan daha hızlı ve daha basit.
işaretleyin

Ne yazık ki, raf setinde "ekleme" değişiklikleri yaptığımda bu benim için çalışmıyor. "Raflı dosya alınamadı. Dosyada beklemede olan bir değişiklik gerekiyor" hatası alıyorum.
John Saunders

@JohnSaunders herhangi bir eklenti veya özel olarak ekleme içeren bir raf setini mi kastediyorsunuz ? Bunu yıllardır yapmama gerek kalmadı :)
Simon_Weaver

1

Raf bilgisi, gittiği belirli yolu içerir. Maalesef, rafa kaldırıldığı konum dışında herhangi bir konuma rafa kaldırmanın otomatik bir yolunu bilmiyorum. Bunu yapmak istediğim zamanlarda, yeni şubedeki eşdeğer dosyaları kontrol etmem, eski şubeden ayırmam ve ardından dosyaları manuel olarak kopyalamam gerekiyordu.

DÜZENLEME: Sanırım bunu zor yoldan yapıyordum. Curt'ün çözümünü denemem gerekecek. :)


0

Bunu yapmak için çok zaman harcadım ve üstesinden gelinmem gereken birkaç sorun vardı. Mümkün ama burada birkaç sorun ve bu sorunları çözmek için uyulması gereken birkaç kural var.

Hata:

çalışma alanını belirleyemiyor

Bu özel sorun, komutun kaynak dal kök klasöründen çalıştırılmasıyla çözüldü . Bu, SO'daki "hedef" dalı kullanmayı söyledikleri bazı yanıtlara aykırıdır - hayır, "kaynak" kullanın:

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

Bundan sonra ikinci sayı ortaya çıktı. TFS sunucusuna bağlanamadı gibi görünüyor. Anladığım kadarıyla birden fazla VS yükledim ve farklı TFS sunucularına bağlandım. VS12 kullanıyordum ve çalışma alanı ve sunucu bağlantım vardı. Ancak TFPT2013'ün çalışması için aynı bağlantının VS13'te çoğaltılması gerektiğini fark etmemiştim. Aynı sunucuya ve çalışma alanına bağlanır.

Ayrıca TFPT2015 kullanarak yapmayı denedim ama yükledim ve TFPT.exe'yi yüklemedi, bu yüzden işe yaramazdı. Bu yüzden TFPT2013'ten TFS2015'e kadar denedim ve bu belirli komut için çalıştı. Merak ediyorum, VS12 / 13 TFS2015'e karşı iyi çalışıyorsa neden olmasın?

Özetlemek

  • CMD veya DevCMD kullanın - önemli değil
  • kaynak şube kök klasöründen komutu çalıştır
  • belirli VS için Team Explorer Server bağlantısını doğrulayın
  • TF Power Tools 2013, TFS v15'e karşı çalışır, en azından geçiş seçeneği çalışır

0

Küçük boyutlu raf setleri için aşağıdaki adımlar kullanılabilir (~ 20 dosya veya daha az).

  1. Raf kümesinde ve hedef dallarda, bekleyen tüm güncellemelerin kontrol edilmesini veya geri alınmasını sağlayarak başlayın.
  2. Raf seti dalında, dosyaları uygun raf setinden ayırın.
  3. Hedef şubede, rafsız raf kümesindeki mevcut dosyalardan herhangi birini kullanıma alın.
  4. Birleştirme güncellemeleri gerektiren dosyaları (varsa) belirlemek için, raf kümesi dalındaki rafsız dosyaları hedef daldakilerle karşılaştırın.
  5. Gerekirse, önceki adımın uygulanabilir dosyalarında el ile birleştirme güncellemeleri yapın ve bu dosyaları hedef şube çalışma alanına kaydedin.
  6. Diğer raf seti dosyalarını raf seti şube çalışma alanından hedef şube çalışma alanına kopyalayın.
  7. Hedef dal çalışma alanındaki yeni güncellenmiş dosyaları teslim edilen dosyalarla karşılaştırın. Gerekli düzeltmeleri yapın.
  8. Hedef daldaki yeni güncellenmiş dosyaları kontrol edin.
  9. Raf kümesi dalında yardım edilmeyen dosyaları geri alın.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.