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ń)
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/"
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
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ć.
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. :)
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”:
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
Poniższe kroki można zastosować w przypadku małych zestawów półek (ok. 20 plików lub mniej).
Na zestawie półek i gałęziach docelowych zacznij od wpisania lub wycofania wszystkich oczekujących aktualizacji.
Na gałęzi zestawu półek wyjmij teczki z odpowiedniego zestawu półek.
W gałęzi docelowej pobierz wszystkie istniejące pliki, które znajdowały się na pustym zestawie półek.
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ą).
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.
Skopiuj inne pliki zestawu półek z obszaru roboczego gałęzi zestawu półek do docelowego obszaru roboczego oddziału.
Porównaj nowe zaktualizowane pliki w docelowym obszarze roboczym z wpisanymi plikami. W razie potrzeby wprowadź poprawki.
Wpisz nowe zaktualizowane pliki w gałęzi docelowej.
Wycofaj niewykorzystane pliki na gałęzi zestawu półek.
Odpowiedzi:
Narzędzia Visual Studio Power Tools powinny Ci to umożliwić.
Na przykład, aby scalić zestaw półek o nazwie „Nazwa zestawu półek” utworzony w Oddział1 do Oddziału2, użyj tego:
źródło
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!
C:\temp\shelveset-name
(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:
c:\temp\shelveset-name
będzie musiała zostać zmieniona, aby odpowiadała nowej gałęzi. Wskazówka: upewnij się, że kopiujesz we właściwe miejsce !!!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ć.
źródło
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. :)
źródło
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:
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”:
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
źródło
Poniższe kroki można zastosować w przypadku małych zestawów półek (ok. 20 plików lub mniej).
źródło