GitLab vs. Perforce Helix Core – porównanie systemów kontroli wersji

Artykuł opublikowany 3 czerwca 2019, zaktualizowany 8 stycznia 2021 przez Magdalenę Korgul, Content Specialist w Deviniti

Odpowiednia platforma wspierająca w produkowaniu oprogramowania powinna pomóc sprawnie zarządzać repozytoriami, konfigurować środowiska i usprawnić współpracę pomiędzy poszczególnymi pracownikami lub działami. Obecnie na rynku znajdziemy coraz więcej narzędzi, które to potrafią. Każde z nich ma swoją specyfikę, dlatego wybór właściwego powinien być podyktowany zarówno charakterem branych na warsztat projektów, jak i specyfiką zespołu. Dziś przyjrzymy się charakterystyce dwóch produktów DevOps: GitLab i Perforce Helix Core. Sprawdźmy, jakie są ich kluczowe funkcjonalności i jakim organizacjom są one polecane.

Czym jest GitLab?

GitLab to wielofunkcyjna aplikacja do kompleksowego zarządzania procesami DevOps i rozwoju oprogramowania. Jednocześnie jest to menadżer repozytoriów oparty o architekturę Gita. Rozwiązanie pozwala zespołom współpracować przy tworzeniu kodu, kopiować go oraz łączyć gotowy kod z istniejącymi już projektami. GitLab oferuje zarówno bezpłatne, otwarte, jak i prywatne repozytoria.

GitLab pozwala sprawnie zarządzać i optymalizować cały cykl tworzenia oprogramowania. Umożliwia przejrzyste planowanie i zarządzanie pracą zespołu, by każdy etap płynnie przechodził do kolejnego, niezależnie od stosowanej metodyki. Dzięki temu zespół może na bieżąco śledzić postępy i zmiany w kodzie oraz wychwytywać pojawiające się błędy i szybko je niwelować.

Jedną z najbardziej użytecznych funkcji narzędzia jest możliwość zarządzania paczkami, korzystając z opcji zarządzania kodem źródłowym i automatycznych pipeline’ów CI/CD. Zintegrowanie z z narzędziami Static & Dynamic Application Security Testing i Container & Dependency Scanning pozwala na zapewnienie projektowi najwyższego stopnia ochrony.

Dashboard umożliwia szybki wgląd w różne środowiska w obrębie GitLab
Dashboard w GitLab

Największe zalety GitLab:

  • elastyczne opcje integracji z innymi narzędziami,
  • niezależny system Wiki do przechowywania plików i tworzenia dokumentacji,
  • Ciągła Integracja,
  • prywatne i publiczne repozytoria,
  • bazuje na kodzie open source.

Czym jest Perforce Helix Core?

Perforce Helix Core to system kontroli wersji przystosowany do obsługi kompleksowych, złożonych projektów. To wysoko skalowalne rozwiązanie obsługujące szybkie cele wydawania. Helix Core pozwala synchronizować pracę wielu osób, poruszających się w różnych narzędziach. Rozwiązanie natywnie obsługuje Git, dzięki czemu deweloperzy mogą używać wybranych przez siebie narzędzi Git bez problemów ze skalą i wydajnością wtedy, gdy rosną pliki, repozytoria czy zespoły. Helix Core zapewnia zespołom wysoką skalowalność i bezpieczeństwo, a także bardzo dobrze chroni własność intelektualną.

Korzystanie z Helix Core pozwala na zaoszczędzenie czasu poświęcanego na obsługę narzędzi i procesów. System automatyzuje i wymusza przepływy pracy, a także integruje się z naszym zestawem narzędzi. Pozwala śledzić każdą zmianę i utrzymuje pełną historię wersji, umożliwiając powrót do dowolnej z nich. Listy zmian pomagają zapewnić możliwość audytu potrzebną do zapewnienia zgodności.

Zrzut ekranu pokazujący sposób mergowania w aplikacji Perforce P4Merge, źródło: perforce.com
Mergowanie w Helix Core/ źródło: perforce.com

Największe zalety Perforce Helix Core:

  • zapewnia jedyne źródło prawdy (ang. single source of truth) na każdym etapie rozwoju produktu,
  • zawiera wysoce skalowalną infrastrukturę,
  • zapewnia konfigurowalne, zautomatyzowane przepływy pracy,
  • zachowuje historię każdej kiedykolwiek wprowadzonej zmiany.

Podstawowe podobieństwa między narzędziami

Zarówno GitLab, jak i Helix Core, odpowiadając za kontrolę wersji oprogramowania, są do siebie podobne w wielu aspektach. Jakie podobieństwa można dostrzec pomiędzy obydwoma narzędziami?

Rozwój aplikacji, ciągłe dostarczanie (CD), ciągła integracja (CI), DevOps, zarządzanie kodami źródłowymi, kontrola wersji, kontrola dostępu/uprawnienia

Podobieństwa i różnice między GitLab i Helix Core

Zarządzanie dużymi plikami/binariami

Duże pliki i artefakty binarne są częścią rozwoju projektu. Mogą być wynikiem kompilacji i danymi wejściowymi do testów. Dla niektórych branż, takich jak tworzenie gier, są one integralną częścią całego procesu. W tym przypadku, aby uzyskać satysfakcjonujący produkt końcowy, musimy być w stanie połaczyć pracę artystów i deweloperów.

Perforce i GitLab przechowują wszystko w jednym repozytorium

W Helix Core artefakty są przechowywane obok kodu źródłowego i innych assetów niebędących kodem. Te artefakty mogą być rejestrowane jako część tej samej listy zmian jako powiązany kod źródłowy. Przechowywanie wszystkiego w jednym serwerze znacząco ułatwia pracę. Dzięki temu administratorzy nie muszą zarządzać dodatkowymi licencjami i integracjami.

GitLab, podobnie jak Helix Core, obsługuje możliwość pamięci masowej dla repozytorium Git. Dysponuje własnym niezależnym systemem Wiki do przechowywania plików i dokumentacji, który dla każdego projektu stanowi osobne repozytorium.

Branching

Oba narzędzia – GitLab i Perforce – oferują lightweight branching, ale inaczej śledzą rozgałęzienia.

Gałęzie w GitLab

GitLab, nadzorujący repozytoria Git, umożliwia rozpoczęcie pracy nad branchem natychmiast po jego stworzeniu. Po wprowadzeniu zmian możemy je zatwierdzić, a następnie użyć mergowania lub wykonać rebase. Warto wziąć pod uwagę fakt, że w przypadku, gdy wielu programistów pracuje nad tym samym plikiem i próbuje jednocześnie wykonać push, mogą pojawić się konflikty. Dlatego tak ważne jest regularne pobieranie najnowszych zmian z serwera jeszcze przed mergowaniem. Ta procedura może być jednak czasochłonna, jeśli nad projektem pracuje kilkunastu czy nawet kilkudziesięciu deweloperów.

Jeżeli między poszczególnymi repozytoriami występują zależności, konieczne jest skoordynowanie w nich konfliktów scalania.

Gałęzie w Perforce Helix Core

Z kolei w Helix Core gałęzie są tworzone na poziomie hierarchii plików. Poszczególni programiści mają wgląd do tego, nad czym pracują inni członkowie zespołu. Pliki są bardzo dobrze zapezpieczone dzięki możliwości przypisywania uprawnień do poziomu plików.

W uproszczeniu mergowania i rozgałęziania pomaga Perforce Streams – system upraszczający konfigurację obszaru roboczego. Umożliwia programistom łatwe przełączanie się pomiędzy strumieniami i sprawdzanie wprowadzanych zmian. Tutaj, podobnie jak w przypadku operowania GitLabem, mogą pojawić się konflikty podczas przesyłania zmian do głównej gałęzi. Narzędzie radzi sobie jednak z nimi szybciej, udostępniając transparentną widoczność postępu prac i zaawansowane powiadomienia o potencjalnych konfliktach, które pozwalają zawczasu uniknąć błędów w mergowaniu.

Integracje

Aby usprawnić pracę w systemie i przyspieszyć wprowadzanie zmian, oba narzędzia oferują szerokie możliwości integracji z usługami i procesami biznesowymi firm.

Integracje z Jirą

Zarówno GitLab, jak i Perforce, umożliwiają integrację z rodziną narzędzi Jira, służących do szerokiego zarządzania pracą we wszelkich zastosowaniach. Integracja GitLab oraz Helix Core z Jirą ma na celu ułatwienie przepływu zadań i ich śledzenia, zautomatyzowanie procesów, a w konwekwencji – przyspieszenie tworzenia oprogramowania. W obu przypadkach integracje są możliwe w wersji Cloud oraz Data Center.

Zalety integracji GitLab i Jira:

  • automatyczne wykrywanie i tworzenie powiązań pomiędzy projektem GitLab a dowolnym projektem w Jira,
  • automatyczne dodawanie komentarzy w Jira,
  • możliwość podania identyfikatora problemu Jira w komunikacie zatwierdzenia lub prośbie o scalenie.
Zrzut ekranu pokazujący umieszczanie zadań GitLab w Jira, źródło: docs.gitlab.com.
źródło: docs.gitlab.com

Zalety integracji Perforce Helix Core i Jira:

  • tworzenie zadań w Jira automatycznie tworzy taski w Helix Core
  • synchronizacja aktualizacji zadań w Perforce i replikowania list zmian, by monitorować je w Jira,
  • replikowanie wybranych zadań, by śledzić je w Helix Core, bez potrzeby otwierania Jira.
Zrzut ekranu pokazujący organizację elementów w PerForce P4V, źródło: perforce.com.
źródło: perforce.com

Co różni GitLab i Perforce Helix Core?

Opisywane narzędzia warto porównać też, zwracając uwagę na różniące je elementy.

Gitlab zawiera następujące elementy (wsparcie platformy SaaS): narzędzia do zwinnego zarządzania projektami, analiza składu oprogramowania (SCA), refaktoryzacja kodu, debugowanie, wsparcie 24/7 na żywo.
Gitlab nie zawiera następujących elementów (wsparcie platformy SaaS): rozwój gier, tworzenie aplikacji internetowych.
HelixCore zawiera następujące elementy (wsparcie platformy Windows Mac): rozwój gier, tworzenie aplikacji internetowych.
HelixCore nie zawiera następujących elementów (wsparcie platformy Windows Mac): narzędzia do zwinnego zarządzania projektami, analiza składu oprogramowania (SCA), refaktoryzacja kodu, debugowanie, wsparcie 24/7 na żywo.

Kiedy lepiej sprawdzi się GitLab?

GitLab pomaga rozwiązać najbardziej podstawowy problem z kontrolą wersji. Pozwala deweloperom na jednoczesną pracę nad tym samym kodem bez jego powielania. To stabilna platforma, która już w bezpłatnej wersji umożlwia korzystanie z jednego kompletnego narzędzia do rozwoju oprogramowania od pomysłu do produkcji. Płatne wersje dają już dużo więcej możliwości, w tym:

  • możliwość wyznaczenia osoby odpowiedzialnej za zaakceptowanie mergowanego kodu do repozytorium,
  • opcja przypisania kilku osób do jednego zadania,
  • całodobowe wsparcie producenta,
  • możliwość tworzenia lub usuwania kont administratorskich z instancji GitLab,
  • integracja z platformą Kubernetes.

Kiedy używać Perforce Helix Core

Helix Core został zaprojektowany z myślą o dużych zespołach, z dużymi bazami kodów i złożonym środowiskiem. To dobry wybór dla zespołów pracujących nad dużymi bazami kodu i posiadającymi niekodowane zasoby, takie jak pliki binarne lub grafika. Znakomitym przykładem są tu organizacje z obszaru Game development, pracujące na dużych plikach różnych formatów, takich jak multimedia w grze, operujące ogromnymi repozytoriami przekraczającymi nawet 100 TB.

Dosatkowo, Helix Core jest polecany dla użytkowników posiadających rozległe ponowne wykorzystanie kodu (np. artefakty) oraz rozproszonych geograficznie zespołów.

Znajdźmy odpowiednie narzędzie dla Twojego biznesu

Skontaktuj się ze specjalistami Deviniti, którzy dobiorą odpowiednie narzędzie dla Twojego zespołu lub zaproponują demo interesującego Cię rozwiązania

Radosław Kosiec

Radosław is Partner Product Department Director in Deviniti spaceship. He’s been supporting Deviniti in many areas since 2011. He advises companies about tools for DevOps, service desk, customer service, task and project management, and more! He is proud to be a Deviniti astronaut because the company follows the principles he has always believed in. He is a great Capitan of his crew!

Więcej od tego autora