2013-04-23 12 views
7

Czy Perforce ma dobry sposób na przeniesienie nieprzesłanych zmian do innego strumienia przed ich przesłaniem (odpowiednik git stash, git checkout otherbranch, git stash pop)?Perforce: przenoszenie nieprzesłanych zmian do innego strumienia

Mam obecnie pliki sprawdzone lokalnie (nie tylko) i edytowane. Próbowałem odkładać je na półkę, a następnie próbować odepchnąć je do strumienia docelowego, ale dostaję "plik (i) nie w widoku klienta". Kiedy wyświetlam listę zmian (na półce lub nie), wszystkie pliki mają ścieżki, które zawierają oryginalny strumień.

Mój strumień docelowy to taki, który właśnie utworzyłem i został nadpisany oryginalnemu strumieniowi. Używam P4V. Wersja zainstalowanych składników Perforce Visual Components to 123.57.9578, a po uruchomieniu p4 z wiersza poleceń jest napisane "Serwer 2012.2/551823". W razie potrzeby mogę dodać więcej informacji.

Odpowiedz

1

Wierzę, że technika shelve/unshelve wymaga serwera 2013.1, a nie serwera 2012.2. Powinieneś to potwierdzić w Dziale pomocy technicznej firmy Perforce.

+0

Dzięki za odpowiedź. Niestety wydaje mi się, że muszę poczekać do następnego tygodnia, zanim będziemy mogli to potwierdzić, ponieważ nasz "Perforce King" jest obecnie na miejscu - zgadnij co - konferencja Perforce: P – entheh

+0

Regały na starszych wersjach perforce. Możesz jednak tylko nie ufać tej samej ścieżce, która zawiera katalog główny oddziału, więc nie możesz nie ufać w innej gałęzi. –

5

Możesz użyć polecenia p4 unshelve, aby zmapować półki w liście zmian do innego strumienia, używając opcji -S. Np .:

p4 unshelve -s <changlist#-with-shelved-files> -S //depot/streamname 

Nie jestem pewien, czy jest to dostępne tylko w określonej wersji lub powyżej. Jednak nie byliśmy w stanie znaleźć sposobu, aby to zrobić za pośrednictwem P4V.

1

Jeśli z jakiegoś powodu wygodniej jest używać P4V niż wiersza poleceń, to rozwiązanie az2tonez może być wykonane za pomocą GUI, przynajmniej w wersji P4V 2014.2.

  1. Odłóż zestaw zmian i upewnij się, że żadne inne pliki nie są wypakowane w obszarze roboczym.
  2. W zakładce "Strumienie" przeciągnij ikonę obszaru roboczego z bieżącego strumienia do strumienia, który chcesz przenieść zmiany do, i pobierz najnowsze zmiany.
  3. Odłącz pliki z karty "Oczekujące". W obszarze Opcje wybierz opcję "Mapuj nieużywane pliki" i wybierz strumień, który chcesz przenieść zestaw zmian z, i naciśnij przycisk "Odzyskaj".
  4. Rozpoznaj pliki używając źródła.
  5. Wyślij swoje zmiany, a voilá! Twoje zmiany powinny znajdować się w drugim strumieniu.
3

Inne odpowiedzi tutaj są poprawne, ale nie ostrzegają, że nie można po prostu odłączyć od żadnego strumienia i nie ufać żadnemu niepowiązanemu strumieniowi. W szczególności oryginalny plakat zapytał o komunikat o błędzie "plik (i) nie w widoku klienta", który jest komunikatem o błędzie wyświetlanym przez P4V, gdy nie wybrano odpowiedniego mapowania.

Oto sztuczka polegająca na znalezieniu właściwego odwzorowania: Twój strumień bez zabezpieczeń musi mieć bezpośrednią relację rodzica/potomka ze strumieniem odseparowanym, a musisz wybrać specyfikację strumienia opisującą tę relację w sekcji "Odwzorowuj niepobrane pliki za pomocą strumienia". . "część okna dialogowego. Oznacza to, że może zająć wiele przeskoków, aby dostać się z oryginalnego strumienia z półki do strumienia docelowego.

Oto konkretny przykład: załóżmy, że masz już półki w pliku Dev-1, które chcesz przenieść na numer Dev-2. Te dwa strumienie Dev są bezpośrednimi dziećmi Main.Nie można odseparować plików Dev-1 bezpośrednio do Dev-2, najpierw należy odrzucić i tymczasowo odłożyć do Main, ponieważ specyfikacje strumienia Dev opisują ich relacje pod względem Main, a nie nawzajem.

Więc unshelve Dev-1 „s pliki do Main z«Mapa unshelved plików przy użyciu strumienia Dev-1»dlatego, że specyfikacja opisuje zależność przejeżdżającego. Następnie odłóż pliki do Main, a następnie zmień obszar roboczy na Dev-2. Teraz możesz odłączyć wersję półki od wersji Main za pomocą opcji "Odwzoruj niepobożnie pliki używając strumienia Dev-2", ponieważ specyfikacja ta opisuje bezpośredni związek z Main do Dev-2.

Dzięki wielu przeskokom można uzyskać dostęp do dowolnego innego połączonego strumienia w sieci. Nie jest to tak proste jak git stash i git stash pop, ale pamiętaj, że Git zakłada, że ​​nazwy plików nie zmieniają się między gałęziami git, podczas gdy Perforce pozwala każdemu przeskakiwać dowolnie zmieniać mapowanie plików i folderów.

+1

Dzięki za odpowiedź. Nie mogę komentować, ponieważ przeszedłem dalej i nie używam już Perforce, ale chciałem tylko powiedzieć, że Git radzi sobie z przemianowaniem i przenoszeniem plików bardzo dobrze w moich doświadczeniach w takich przypadkach. Oczywiście Perforce ma swoje mocne strony (w szczególności poglądy cząstkowe), ale nie było to jedno z nich! – entheh

Powiązane problemy