Mam następującą sytuację oddziałów w repozytorium Perforce: Jest tu mainline "trunk" i dwie gałęzie wydania "1.0" i "1.1". Oddział "klient", ze zmianami specyficznymi dla klienta, został rozgałęziony w gałęzi 1.0. Teraz klient chce przejść do wersji 1.1. Jak mogę połączyć gałąź 1.1 z gałęzią klienta? Zmiany specyficzne dla klienta powinny pozostać "na wierzchu" 1.1.Perforce: jak zintegrować wiele oddziałów?
Oto schemat dla jednego dotkniętego pliku:
1.1 -(1)---(2)---(3)
/ \ \
/ \ \
trunk 100--(101)-(102)--103---104---105---106---107
\
\
1.0 ---1-----2--...
\
\
customer ---1-----2----*3*
Aktualna wersja pliku Patrzę na to rewizja 3 na gałęzi klienta.
Jeśli zdecyduję się na integrację oddziału "1.1" z docelowym "klientem", spodziewałbym się, że znaleziono wspólnego przodka obu (wersja 100 w głównej linii), a wszystkie poprawki z tego miejsca prowadzące do końcówki gałęzi 1.1 to: scalone (te w nawiasach).
Zamiast tego tylko Perforce umożliwia scalenie wersji 1 do 3 gałęzi 1.1, co nie powiedzie się, ponieważ brakuje w nim niezbędnych zmian, które miały miejsce w głównej linii.
W jaki sposób przekonać Perforce, aby to zrobiła, bez konieczności ręcznego sprawdzania poszczególnych plików i wybierania wersji do scalenia? Może strategia rozgałęziania jest nieodpowiednia? Co jeszcze powinienem zrobić?
Jeśli spróbuję "p4 integ -b 1.1_to_customer" otrzymam "nie można zintegrować z ... bez flagi -i" dla każdego pliku, który ma zmiany w gałęzi klienta. Jeśli dodaję "-i", scalanie nie powiedzie się, ponieważ zintegrowane są tylko wersje w gałęzi 1.1, a nie te w trunkingu. – hfs
Perforce nie wie, że zmiany 101 i zmiany 102 są niezbędne dla tego, co wydarzyło się w oddziale 1.1. Dlatego przed integracją 1.1 musisz najpierw zintegrować trunk do 102 klientów. –
Tak, właśnie to zrobiłem na końcu: miałem dwie etykiety na głównej linii, które oznaczały podstawy oddziału 1.0 i 1.1. Najpierw połączyłem "trunk" między tymi etykietami, rozwiązałem wszystko, a następnie scaliłem 1.1 i ponownie rozwiązałem.To się udało. – hfs