Scroll to top
en pl

Perforce Streams- wprowadzenie


Radoslaw Kosiec - 31 marca 2017 - 0 comments

Jeżeli uczestniczyliście Państwo w Konferencji dla użytkowników Perforce 2009, prawdopodobnie słyszeliście o prototypie „strumieni”, który przedstawialiśmy. Od tamtego czasu funkcja strumienia Perforce przeniosła się od prototypu do gotowego produktu. Podczas, gdy nasi inżynierowie pracują nad rozwojem strumieni, ja zabieram się za tworzenie wpisu na blogu, by poinformować o tym świat. Odpowiem między innymi na pytania: Czym są strumienie? Dlaczego są przydatne? Jak będą działać? Kiedy będą dostępne? Cała opowieść zajmie kilka postów, więc jeżeli w tym wpisie nie znajdziesz odpowiedzi na wszystkie swoje pytania, rekomenduję śledzić kolejne posty.

Zacznijmy od samego początku…

Czym są strumienie?

W świecie kontroli wersji, branch (gałąź) to zestaw plików, który jest wariantem innego zestawu plików. Strumień jest to „branch z mózgiem”.

Na przykład, powiedzmy że mój branch jest zbiorem plików w //depot/sandbox/laura/ourApp/. Pliki te możesz skopiować do swojego branch’a np. //depot/sandbox/bob/ourApp/. Nasze branch’e mogą rozwijać się niezależnie od siebie, a my możemy scalić zmiany pomiędzy nimi.

Perforce posiada narzędzia do porównywania i mergowania naszych branch’ów, jest to dobre w sprawdzaniu tego co zmergowaliśmy. Perforce jednak nie wie jaki jest zakres indywidualnego branch’a. Jane, na przykład, może branchować wszystko  z //depot/sandbox/ do //depot/jane/sandbox/, klonując zarówno mój jak i twój branch do swojego. Jednak prawdopodobnie nie jest to operacja, którą Jane chciała wykonać. Zapewne chodziło o sklonowanie mojego lub Twojego branch’a, lecz nie obu.

Do tej pory Perforce nie posiadał metadanych aby poprowadzić Jane ku temu, co chciała osiągnąć. Jane powinna była z góry wiedzieć, z jakich części składa się branch, który chciała sklonować. A jeśli źle to zrozumiała, mogło doprowadzić to do niewłaściwego sklonowania plików. Ponieważ Perforce nie wiedział, gdzie były nasze branch’e, to nie mógł podpowiedzieć Jane, które pliki należy sklonować aby utworzyć własny branch.

Wprowadzenie strumieni: Perforce przechowuje w bazie aktualne informacje o branch’u – jego lokalizację, właściciela, branch macierzysty oraz więcej (do opracowania za niedługo). Jane jest teraz w stanie sklonować odpowiedni zestaw plików, wskazując jedynie od którego strumienia zacząć. A teraz Peforce poprowadzi Jane w kierunku prawidłowej integracji zmian, ponieważ już wie, w jaki sposób jej branch dotyczy innych.

Ale czy Perforce nie posiada już ,,branch’y”?

Słyszę jak mówisz, “Chwileczkę – nie jest to tym, do czego służy komenda p4 branches?” To prawda, Perforce posiada polecenie p4 branches,  i tak, ma możliwość tworzenia obiektu o nazwie „branch”. Ale jeśli kiedykolwiek tego próbowałeś, zdajesz sobie sprawę, że to, co Perforce nazywa „branch” w rzeczywistości jest mapowaniem pomiędzy dwoma zestawami plików.

“Branch” jest podstępnym określeniem dla Peforce. Jest tak, ponieważ używamy go już do opisania mapowania. Wykorzystując to określenie również do opisania jednostronnego zestawu plików otrzymujemy konflikt nazewnictwa. (Instrukcje Perforce unikają nieporozumień używając „codeline” w nawiązaniu do branch’a jako zestawu plików). Więc bądź czujny – istniejący „branch” w Perforce nie oznacza jednostronnego branch’u plików. Za to właśnie odpowiada nowy obiekt „strumień” .

Czy Perforce wynalazło strumienie?

Nie. Strumienie są wśród nas już od dłuższego czasu. Po raz pierwszy dowiedziałem się o nich od Brad’a Appleton’a w jego opracowaniu „Linie Strumieniowe”. Wpadłem na nie ponownie w książce ClearCase Brian’a White’a. Dzisiaj, dziesięć lat później, mnóstwo produktów kontroli wersji posiada funkcję strumieni.

Czego Perforce jednak dokonał – połączył niektóre z własnych, najbardziej charakterystycznych funkcji z wygodą strumieni.

Dlaczego strumienie Perforce?

Wiele, wiele sklepów korzysta już z Perforce do branch’owania strategii, które są bardzo podobne do tego co właśnie oferują strumienie. Model strumienia, zaprojektowany przez nas, faktycznie pochodzi z idei naszych użytkowników. (Chciałbym tutaj wymienić kilka nazwisk, ale za bardzo się boję, że kogoś pominę. Powiem tylko, że wielu z Was – zresztą sami wiecie kto – wzięło udział w rozwoju naszej wizji).

Tak więc jeżeli już doskonale znasz się na używaniu branch’y za pomocą Perforce, w jaki sposób strumienie mogą okazać się lepsze? Poniżej znajduje się kilka powodów:

  • Strumienie oferują innowacyjną strategię branch’owania oraz mergowania. Zamiast marnować czas na zastanawianiu się nad własną strategią, masz teraz możliwość korzystania z naszej. Jest to przydatne, jeżeli jesteś nowym użytkownikiem Perforce, ze względu na natychmiastową możliwość rozpoczęcia. Jeżeli już używasz Perforce, nie martw się – nasz model strumienia jest przeznaczony do ścisłej pracy z „klasycznym” Perforce.
  • Strumienie są  skuteczne. Model strumienia Perforce opiera się na koncepcjach, którym poświęciliśmy mnóstwo czasu (więcej w mojej książce, rozdział  7, lub w moim Google talk).  Otrzymaliśmy komentarze, że nasza koncepcja działa. Główny model i koncepcja mergowania w dół czy kopiowania w górę
  • Strumienie dają możliwość kontroli menadżerom projektu. Widok strumienia określa, z których plików się składa i w jaki sposób pojawią się one w obszarach roboczych użytkowników. Właściciel strumienia kontroluje jego widok. Widoki strumienia są dziedziczone, tak, że gdy strumień jest tworzony, jego widok automatycznie odzwierciedla widok macierzysty.
  • Strumienie są oparte na najbardziej zaawansowanych funkcjach Perforce. Weźmy dla przykładu mapowanie widoku klienta. W rzeczywistości, aby pojawić się w strumieniu, pliki nie muszą być branch’owane. Zamiast tego, mogą być one „importowane” ze strumienia macierzystego lub innych.
  • Strumienie są proste. Używając strumieni, nigdy nie będziesz musiał zmieniać każdego widoku klienta lub branch’a. Oznacza to zaprzestanie żmudnego procesu uczenia każdego z programistów konfiguracji obszaru roboczego – wystarczy założyć jeden widok strumienia i wszystkie obszary robocze dla tego strumienia będą miały właściwy widok.
  • Strumienie są piękne. Z pewnością pokochasz od pierwszego wejrzenia nasze narzędzia wizualizacji strumieni.

Co kryje się pod maską?

Funkcja strumienia jest zasadniczo aplikacją do branch’owania i mergowania, opartą na systemie Perforce. Jakby nie patrzeć, nadal pracujesz z plikami, obszarami roboczymi klientów. Tak jak zwykle ze wszystkim w Perforce – strumienie nie zmieniają nic z tego.

Nowością są dwa główne narzędzia Perforce, takie jak Perforce Server oraz P4V, dzięki temu korzystanie ze strumieni jest łatwiejsze. Serwer, na przykład, teraz dynamicznie generuje widok klienta i branch’a z definicji strumieni. Wykorzystuje on również strumienie do obliczenia wartości domyślnych dla mergowania oraz promocji. Funkcje P4V zostały rozszerzone aby pokazać strumienie w sprytnym schemacie wizualnym jak również zaoferować prosty interfejs do zaawansowanych zadań strumieni.

W kolejnych postach zagłębię się w szczegóły. Na razie powiem tylko, że jest to czarna magia i nie mogę się doczekać, aby więcej o tym napisać.

źródło: https://www.perforce.com/blog/110308/introducing-perforce-streams 

Related posts