Czy mogę przenieść się do innego oddziału w TFS 2008?

105

Załóżmy, że jakiś programista w moim zespole odłożył na półkę swoje zmiany, które wprowadził w gałęzi A. A ja pracuję w gałęzi B. Czy mogę cofnąć jego zmiany do gałęzi B? (Przez GUI lub wiersz poleceń)

spinodalny
źródło
Demo powyższego polecenia: Podstawy polecenia Unshelve
Rohit

Odpowiedzi:

129

Narzędzia Visual Studio Power Tools powinny Ci to umożliwić.

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

Na przykład, aby scalić zestaw półek o nazwie „Nazwa zestawu półek” utworzony w Oddział1 do Oddziału2, użyj tego:

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
Curt Hagenlocher
źródło
2
Ooohhh ... Curt, myślę, że właśnie poprawiłeś mój dzień. Będę musiał spróbować później.
Herms,
Skąd bierzesz elektronarzędzia?
Guy,
3
Tak, elektronarzędzia POWINNY ci to umożliwić, ale niestety scalanie za każdym razem idzie strasznie źle, więc jest prawie bezużyteczne.
Tim Booker
Fuzja nie jest taka zła. Odkryłem, że Auto Merge działa w 90% przypadków.
Justin Rudd,
2
Po prostu spróbowałem. Przeniosłem wiele plików w ramach półki i niestety nie wygląda to dobrze. Musisz ręcznie „przenieść” wszystkie te pliki (nie ma też możliwości wyboru wielokrotnego). Następnie są dodawane jako nowe pliki do obszaru roboczego. Nie mogę go używać, ponieważ nie mogę go już scalić.
Stefan Steinegger
34

Alternatywne rozwiązanie dla tfpt, które pozwala uniknąć konieczności ręcznego scalania każdego pliku

Problem z narzędziem tfs polega na tym, że wykonujesz „bezpodstawne scalanie”, więc musisz potwierdzać każdy plik . Miałem zestaw ponad 800 plików i nigdy nie ufałem przyciskowi „auto merge” i nie chciałem przeglądać każdego pliku po kolei - więc musiałem znaleźć inny sposób!

  • Pobierz i zainstaluj TFS Shelveset Sidekick .
  • Narzędzie pojawia się w sekcji „Narzędzia” w VS2010
  • Uruchom narzędzie „Shelveset Sidekick” i kliknij Search, aby wyświetlić zestawy półek
  • Kliknij prawym przyciskiem myszy zestaw półek i wybierz „Eksportuj zestaw półek”
  • Zapisz w pustej lokalizacji, takiej jak C:\temp\shelveset-name
  • Teraz masz pełną strukturę katalogów zawierającą TYLKO nowe pliki

(Uwaga: nie ma paska postępu podczas eksportowania - więc jeśli masz duży zestaw półek, którego eksportowanie zajmuje dużo czasu, wystarczy sprawdzić w Eksploratorze Windows (Plik> Właściwości> Rozmiar), czy pliki nadal spadają, jeśli myślę, że jest zamrożone).

Teraz wystarczy skopiować je do nowej gałęzi za pomocą Eksploratora Windows.

To zadziałało dla mnie:

  • Najpierw sprawdzenie całego rozwiązania (w nowej branży)
  • Zamknij to rozwiązanie
  • Przełącz TFS do trybu offline z poziomu VS ( narzędzie do tego ) - zobacz poniżej, dlaczego jest to ważne ...
  • Skopiuj pliki w Eksploratorze Windows. Struktura katalogów w programie c:\temp\shelveset-namebędzie musiała zostać zmieniona, aby odpowiadała nowej gałęzi. Wskazówka: upewnij się, że kopiujesz we właściwe miejsce !!!
  • Przenieś VS online
  • Powinien znaleźć wszystkie zmiany i dodać nowe pliki
  • Jeśli poprosi Cię o powiązanie kontroli źródła, upewnij się, że ścieżka jest poprawna dla nowej gałęzi.
  • Przetestuj - a następnie sprawdź nowe pliki

Ważne: odkryłem, że jeśli najpierw nie przełączysz TFS do trybu offline, w końcu wszystkie nowe pliki (z zestawu zmian na półkach) będą wyświetlane bez małego czerwonego znacznika wyboru i będziesz musiał je wykluczyć i dołączyć ponownie żeby je dodać. Jeśli ktoś ma alternatywne rozwiązanie tego problemu, chciałbym wiedzieć - odświeżanie wydaje się nie działać.

Simon_Weaver
źródło
Ta metoda jest łatwiejsza w przypadku większych zestawów półek i właśnie ją zastosowałem. Dzięki!
Ani
Ta metoda jest naprawdę lepsza dla większych zestawów półek
Aamir
Cóż, możesz uciec bez przełączania TFS w tryb offline. Ale nie jestem pewien, czy warto. To, co zrobiłem, to uruchomienie akcji Porównaj - w Eksploratorze kontroli źródła z menu kontekstowego otwartego w odpowiednim folderze. Można filtrować dane wyjściowe, aby wyświetlać tylko różne elementy. Następnie pozwala na dokonanie wielu zaznaczeń na nich i wyewidencjonowanie ich wszystkich naraz. Ale myślę, że przełączenie TFS w tryb offline jest szybsze i prostsze.
znak
Niestety u mnie to nie działa, gdy mam „dodaj” zmiany w zestawie półek. Pojawia się błąd „Nie udało się pobrać pliku z półki. Wymagana jest oczekująca zmiana pliku z półki”.
John Saunders
@JohnSaunders masz na myśli shelveset z dowolnego dodaje lub wyłącznie dodaje? Nie musiałem tego robić od lat :)
Simon_Weaver
1

Informacje o półce obejmują konkretną ścieżkę, do której dochodzi. Niestety nie znam żadnego automatycznego sposobu na odłożenie półki w inne miejsce niż to, do którego zostało złożone. Czasami, gdy chciałem to zrobić, musiałem wyewidencjonować równoważne pliki w nowej gałęzi, wyjąć je z półki ze starej gałęzi, a następnie ręcznie skopiować pliki.

EDYCJA: Cóż, myślę, że robiłem to na własnej skórze. Będę musiał wypróbować rozwiązanie Curta. :)

Herms
źródło
0

Spędziłem dużo czasu, aby to zrobić i miałem kilka problemów do rozwiązania. Jest to możliwe, ale tutaj kilka kwestii i kilka zasad, których należy przestrzegać, aby uniknąć tych problemów

Błąd:

nie można określić obszaru roboczego

Ten konkretny problem rozwiązano, uruchamiając polecenie z folderu głównego gałęzi źródłowej . Jest to sprzeczne z niektórymi odpowiedziami na SO, w których mówią, aby użyć gałęzi „docelowej” - nie, użyj „źródła”:

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

Po tym pojawił się drugi numer. Wygląda na to, że nie mógł połączyć się z serwerem TFS. Z tego co sobie uświadomiłem, mam zainstalowanych wiele VS i podłączonych do różnych serwerów TFS. Używałem VS12 i miałem połączenie z obszarem roboczym i serwerem. Ale nie zdawałem sobie sprawy, że to samo połączenie musi zostać zreplikowane w VS13, aby TFPT2013 działało. Łączy się z tym samym serwerem i obszarem roboczym.

Próbowałem też to zrobić używając TFPT2015, ale zainstalowałem go i nie zainstalowałem TFPT.exe, więc był bezużyteczny. Więc próbowałem od TFPT2013 do TFS2015 i zadziałało dla tego konkretnego polecenia. Zastanawiam się, dlaczego nie, jeśli VS12 / 13 działa dobrze z TFS2015?

Podsumowując

  • Użyj CMD lub DevCMD - nie ma znaczenia
  • uruchomić polecenie z źródłowego folderu głównego oddziału
  • sprawdź połączenie Team Explorer Server dla określonego VS
  • TF Power Tools 2013 działa przeciwko TFS v15, przynajmniej opcja migracji działa
TS
źródło
0

Poniższe kroki można zastosować w przypadku małych zestawów półek (ok. 20 plików lub mniej).

  1. Na zestawie półek i gałęziach docelowych zacznij od wpisania lub wycofania wszystkich oczekujących aktualizacji.
  2. Na gałęzi zestawu półek wyjmij teczki z odpowiedniego zestawu półek.
  3. W gałęzi docelowej pobierz wszystkie istniejące pliki, które znajdowały się na pustym zestawie półek.
  4. Porównaj nieprzedłożone pliki w gałęzi zestawu półek z plikami w gałęzi docelowej, aby zidentyfikować pliki, które wymagają aktualizacji scalania (jeśli istnieją).
  5. W razie potrzeby ręcznie wprowadź aktualizacje scalające do odpowiednich plików z poprzedniego kroku i zapisz te pliki w docelowym obszarze roboczym gałęzi.
  6. Skopiuj inne pliki zestawu półek z obszaru roboczego gałęzi zestawu półek do docelowego obszaru roboczego oddziału.
  7. Porównaj nowe zaktualizowane pliki w docelowym obszarze roboczym z wpisanymi plikami. W razie potrzeby wprowadź poprawki.
  8. Wpisz nowe zaktualizowane pliki w gałęzi docelowej.
  9. Wycofaj niewykorzystane pliki na gałęzi zestawu półek.
JohnH
źródło