2008-11-18 12 views
10

Pracowaliśmy nad projektem, a do tego stworzyliśmy szkielet zajęć w naszym głównym oddziale. Teraz zaczynamy kodować, a do tego mamy nową gałąź. Byłoby miło, gdybym mógł przenieść wszystkie nowe pliki z głównej gałęzi do nowej gałęzi. Jednak nie mogę ich jeszcze sprawdzić. Czy możliwe jest zintegrowanie wyrejestrowanej listy zmian? Dzięki.Czy mogę zintegrować wypakowane pliki do innego oddziału na perforce

Odpowiedz

0

Nigdy nie znalazłem sposobu, aby to zrobić w zręczności, ale możesz przynajmniej częściowo go zautomatyzować.

Zwykle, gdy musiałem coś takiego robić, sprawdzałem pliki w gałęzi, do której chcę przenosić elementy, a następnie użyłem WinMerge do zmiany gałęzi i skopiowania zmian. Gdy to zrobisz, możesz cofnąć zmiany w oryginalnej gałęzi i sprawdzić je w nowym oddziale.

To nie jest najlepsze rozwiązanie (bez automatycznego kasowania/dodawania/usuwania plików w nowym oddziale), ale było najszybszą metodą, jaką wymyśliłem.

-1

Łatwa odpowiedź brzmi - nie, nie możesz. Szybki przegląd dokumentacji Perforce nie był na to gotowy, niestety, ale z mojego doświadczenia każda próba wyciągnięcia dywanu spod serwera Perforce spowoduje, że twoje zmiany zostaną utracone, co sprawi, że będziesz nieszczęśliwy obozowicz.

Utwórz kopię zapasową, utwórz nowy obszar roboczy w nowym oddziale i ponownie zastosuj zmiany, być może za pomocą strategii porównania/scalania określonej w odpowiedzi Herms.

+0

Zobacz link powyżej na temat prac rozgałęzionych w toku. –

0

Niezupełnie.

Można oczywiście po prostu otworzyć pliki do edycji w nowym oddziale i ręcznie skopiować zmienione pliki z obszaru roboczego głównej gałęzi do obszaru roboczego nowej gałęzi. Jest to prawdopodobnie najprostszy sposób, jeśli tylko kilka plików.

Here to kilka skryptów, które mogą być przydatne w przypadku większej liczby plików. Np. Za pomocą skryptu P4Shelf można utworzyć archiwum wszystkich zmienionych plików, a następnie automatycznie otworzyć je w dowolnym oddziale z przywróconymi zmianami.

Sprawdź również niektóre other nifty scripts dla Perforce autorstwa Jim Tilander.

10

Strona pomocy technicznej firmy Perforce wyjaśnia, jak to zrobić: Perforce Knowledge Base: Branching work in progress. Byłoby przyjemniej, gdyby był to pojedynczy krok, który nie wymagałby uruchomienia ośmiu różnych poleceń.

+0

To jest odpowiednia odpowiedź - zrobiłem to ładuje się i jest bardzo łatwe. –

+0

@ user38703: Proszę oznaczyć ją jako poprawną odpowiedź, jeśli jest. –

+2

Zdumiewa mnie, że git jest niestosowny, ponieważ jest "trudny w użyciu", gdy odpowiednik p4 "git rebase" to około 15 poleceń. – RJFalconer

6

Od wydania 2013.1, droga do oddziału w toku to shelve praca i unshelve na oddziale. W szczegółach:

  1. Shelve zaległych zmian:

    $ p4 shelve ... 
    Change 182535 created with 10 open file(s). 
    Shelving files for change 182535. 
    edit //info.ravenbrook.com/project/mps/master/code/arenavm.c#26 
    # etc. 
    
  2. Unshelve nich na oddziale (za pomocą opcji -b, który mapuje nazwę pliku za pomocą specyfikacji Branch):

    $ p4 unshelve -b mps/branch/2013-06-05/diag -s 182535 
    ... //info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - must resolve //info.ravenbrook.com/project/mps/master/code/[email protected]=182535 before submitting 
    # etc. 
    
  3. Rozwiąż wszelkie połączenia wynikające z unshelve, używając p4 resolve -as, aby szybko wykonać operacje "bezpieczne", a następnie wykonaj polecenie Reszta z p4 resolve jak zwykle.

    $ p4 resolve -as 
    //gdr-peewit/info.ravenbrook.com/project/mps/branch/2013-06-05/diag/code/arenavm.c - copy from //info.ravenbrook.com/project/mps/master/code/arenavm.c 
    # etc. 
    $ p4 resolve 
    No file(s) to resolve. 
    

(Przykładem jest wyjście z prawdziwego przypadku użycia wpadłem właśnie teraz).

0

przeformułowanie odpowiedź Garetha Reesa powyżej w prostych słowach,

p4 unshelve -b target_branchspec -s changelist 

:)

Powiązane problemy