PERFORCE SYSTEM KONTROLI WERSJI W ZASTOSOWANIACH

Podobne dokumenty
KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

GIT. System Kontroli wersji GIT. Rafał Kalinowski

Assembla.com zajęcia 1

Co zostanie wypisane na ekranie? (1)

GIT. Rozproszony system kontroli wersji

Programowanie I

Programowanie zespołowe

Partnerzy: Laboratorium 15

Git rozproszony system kontroli wersji

Systemy zarządzania wersjami

Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Narzędzia programistyczne - GIT

Zdalne monitorowanie i zarządzanie urządzeniami sieciowymi

Systemy Kontroli Wersji

SUBVERSION TOMASZ ŁUKASZUK

CVS system kontroli wersji

Przygotowanie platformy projektowo-programowej

Wstęp do Informatyki. Klasyfikacja oprogramowania

Projekt dotyczy stworzenia zintegrowanego, modularnego systemu informatycznego wspomagającego zarządzanie pracownikami i projektami w firmie

System kontroli wersji, system zarządzania kodem źródłowym

Jednolite zarządzanie użytkownikami systemów Windows i Linux

Monitorowanie i zarządzanie urządzeniami sieciowymi przy pomocy narzędzi Net-SNMP

REFERAT PRACY DYPLOMOWEJ

Tworzenie kopii zapasowych i archiwalnych

Uniwersytet Mikołaja Kopernika w Toruniu Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

System kontroli wersji Git

Program szkolenia: Continuous Integration i Git

Dokumentacja projektu QUAIKE Architektura oprogramowania

Opis systemu CitectFacilities. (nadrzędny system sterowania i kontroli procesu technologicznego)

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

Git, Bitbucket. Narzędzia i środowiska programistyczne. Laboratorium 2. Prowadzący: Kierunek: Semestr: Rok: Tomasz Gądek Informatyka Zimowy 2

Rok szkolny 2015/16 Sylwester Gieszczyk. Wymagania edukacyjne w technikum. ADMINISTROWANIE BAZAMI DANYCH kl. 4c

Windows Serwer 2008 R2. Moduł 8. Mechanizmy kopii zapasowych

Gra-zabawka dla niemowląt przygotowana z użyciem w Unity 3D

Referat pracy dyplomowej

Symantec Backup Exec System Recovery 7.0 Server Edition. Odtwarzanie systemu Windows w ciągu najwyżej kilkudziesięciu minut nie godzin czy dni

ZARZĄDZANIE DOKUMENTACJĄ. Tomasz Jarmuszczak PCC Polska

SVN sojusz, partnerstwo, współpraca

Dokument Detaliczny Projektu

Zarządzaj projektami efektywnie i na wysokim poziomie. Enovatio Projects SYSTEM ZARZĄDZANIA PROJEKTAMI

Ćwiczenia 9: Zarządzanie konfiguracją Zadania:

Koncepcja wirtualnej pracowni GIS w oparciu o oprogramowanie open source

Włącz autopilota w zabezpieczeniach IT

System kontroli wersji git

Bezpieczeństwo systemów i lokalnej sieci komputerowej

Tomasz Grześ. Systemy zarządzania treścią

NIEZAWODNE ROZWIĄZANIA SYSTEMÓW AUTOMATYKI. asix. Aktualizacja pakietu asix 4 do wersji 5 lub 6. Pomoc techniczna

Tworzenie i obsługa wirtualnego laboratorium komputerowego

Praca w sieci z serwerem

Platforma GitHub. 1 Cel laboratoriów. 2 GitHub. 2.1 Git. źródeł.

Tomasz Greszata - Koszalin

Microsoft Visual SourceSafe uproszczona instrukcja użytkowania

Cechy systemu X Window: otwartość niezależność od producentów i od sprzętu, dostępny kod źródłowy; architektura klient-serwer;

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

Konspekt pracy inżynierskiej

Webowy generator wykresów wykorzystujący program gnuplot

Opracowanie dodatkowego rodzaju pytań dla systemu Moodle

Aplikacja serwerowa Platformy Prezentacyjnej Opis produktu

Instalacja programu dreryk

System kontroli wersji SVN

Dobór systemów klasy ERP

Przetwarzanie Zespołowe Porównanie programów do pracy grupowej: DotProject, egroupware, SAP ERP

Open Source w służbie developerom

Projektowanie oprogramowania systemów NARZĘDZIA PRACY GRUPOWEJ, KONTROLI WERSJI, DOKUMENTOWANIA I ŚLEDZENIA BŁĘDÓW


Uniwersytet Mikołaja Kopernika. Wydział Matematyki i Informatyki Wydział Fizyki, Astronomii i Informatyki Stosowanej Instytut Fizyki

Bazy danych 2. Wykład 1

Biorąc udział w projekcie, możesz wybrać jedną z 8 bezpłatnych ścieżek egzaminacyjnych:

1 Spotkanie Użytkowników Systemów B&R, 9 10 października Hotel Ossa Congress & SPA, Ossa, Rawa Mazowiecka - -

git krótki przewodnik

Wprowadzenie do projektu QualitySpy

System Kontroli Bazy Danych Topograficznych (SKBDT) zawód kartografa?

Michał (plucho) Subversion Wykorzystanie i administracja repozytorium

Szczegółowy opis przedmiotu umowy. 1. Środowisko SharePoint UWMD (wewnętrzne) składa się z następujących grup serwerów:

egroupware czy phpgroupware jest też mniej stabilny.

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

Spis treści MONITOR PRACY... 4

Zadanie1: Odszukaj w serwisie internetowym Wikipedii informacje na temat protokołu http.

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Inżynieria oprogramowania (Software Engineering) Wykład 1

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Poziomy wymagań Konieczny K Podstawowy- P Rozszerzający- R Dopełniający- D Uczeń:

Działanie komputera i sieci komputerowej.

Git i platforma GitHub

ActiveXperts SMS Messaging Server

Akademia Techniczno-Humanistyczna w Bielsku-Białej

GM System. Solid Edge Technical Publications Oferta produktu

aplikacja akcyzattor

MOJA FIRMA PLUS. bankowość elektroniczna dla małych i średnich firm

Podstawowe zagadnienia z zakresu baz danych

MASKI SIECIOWE W IPv4

GLOBAL4NET Agencja interaktywna

Załącznik 1 instrukcje instalacji

VALIO Sp. z o.o. Załącznik nr 1 do Zapytania ofertowego dotyczącego zakupu licencji części systemu B2B oraz wykonania Warstwy Prezentacyjnej.

REFERAT PRACY DYPLOMOWEJ Temat pracy: Projekt i realizacja serwisu ogłoszeń z inteligentną wyszukiwarką

Uniwersytet Warszawski Wydział Matematyki, Informatyki i Mechaniki. Paweł Parys. Nr albumu: Aukcjomat

Transkrypt:

Mgr inż. Stanisław GRZYWIŃSKI Wojskowa Akademia Techniczna, Wydział Mechatroniki i Lotnictwa PERFORCE SYSTEM KONTROLI WERSJI W ZASTOSOWANIACH Streszczenie: W artykule zaprezentowano możliwości i zalety zastosowania systemu kontroli wersji w procesie implementacji oprogramowania. Przedstawiono podstawowe funkcje systemu Perforce oraz porównano jego możliwości z innymi systemami dostępnymi na rynku. PERFORCE VERSION CONTROL SYSTEM USED IN APPLICATIONS Abstract: This paper presents possibilities and advantage of using version control systems in software development. Discusses the basic functions of Perforce software and compare its features with other systems available on the market. Słowa kluczowe: system kontroli wersji, repozytorium, integracja Keywords: version control system, repository, integrate 1. WPROWADZENIE W dzisiejszym cyfrowym świecie, gdzie niemal każdy przechowuje szereg danych, często zachodzi konieczność dodatkowego przechowywania kopii zapasowej lub też przywrócenia pliku do jego wcześniejszej wersji. Jedną z wielu możliwości zarządzania plikami danych jest np. ciągłe modyfikowanie istniejących i kopiowanie do konkretnych katalogów często pod zmienioną nazwą. Jest to znana praktyka, którą stosuje dzisiaj wielu użytkowników oprogramowania. Metodyka ta sprawdza się w przypadku, gdy mamy do czynienia z niewielkim zbiorem danych. Jednak i w tym wypadku rozwiązanie pozornie proste i niezawodne posiada szereg wad i jest podatne na błędy, które bardzo często są wynikiem prostej pomyłki. Aby poradzić sobie z tego typu problemami oraz sprawniej zarządzać plikami danych, opracowano szereg lokalnych systemów kontroli wersji, które składają się z bazy danych, gdzie przechowywane są wszystkie zmiany dokonane na monitorowanych plikach. System kontroli wersji, gdyż o takim w artykule jest mowa (z ang. version control system lub revision control system) to zestaw narzędzi używanych do monitorowania i kontrolowania zmian prowadzonych w plikach projektów odnoszących się w szczególności do kodu źródłowego, dokumentacji oraz zmian dotyczących np. stron internetowych. Systemy tego typu są nieocenione zwłaszcza przy realizacji projektów programistycznych. Przechowują one starsze wersje modyfikowanych plików, wykonane przez różne osoby niezależnie od daty modyfikacji, pozwalając w każdej chwili je przywrócić. Systemy kontroli wersji pozwalają na przykład odtworzyć stan całego projektu sprzed kilku dni, tygodni czy miesięcy oraz porównać wprowadzone zmiany. Dzięki takiemu podejściu w przypadku popełnienia błędu czy utraty części danych możliwe jest ich przywrócenie. 225

MECHANIK 7/2014 Artykuł ten nie omawia wszystkich aspektów korzystania z systemu kontroli wersji, gdyż jest to temat bardzo obszerny. Nie opisuje również w całości dostępnego na rynku oprogramowania. W artykule główny nacisk został położony na opis możliwości, jakie wynikają z zastosowania systemu kontroli wersji w tworzeniu oprogramowania. Skupiono się na wybranych aspektach kontroli wersji przedstawionych na przykładzie systemu Perforce. 2. SYSTEMY KONTROLI WERSJI Systemy kontroli wersji ze względu na ich architekturę można podzielić na trzy główne kategorie: lokalne, do których można zaliczyć systemy np. RCS, GNU SCSS, scentralizowane, m.in. SVN, CVS, PERFORCE, rozproszone, w których można wyróżnić np. GIT, MERCURIAL, SVK. Systemy lokalne pozwalają tworzyć repozytoria danych lokalnie, tylko na jednym komputerze. Mogą być one używane zatem tylko i wyłącznie przez jedną osobę, która pracuje nad daną częścią dokumentacji. Schematycznie przedstawiono to na rys. 1. Narzędzia tego typu z uwagi na brak możliwości współdzielenia są dzisiaj wykorzystywane rzadko. Niemniej jednak jednym z najbardziej popularnych narzędzi tej grupy był system RCS (z ang. Revision Control System), który wciąż można spotkać na wielu komputerach. Rys. 1. Zobrazowanie przechowywania danych w systemie lokalnym System RCS to pakiet poleceń pracujących w środowisku Unix/GNU/Linux, realizującym kontrolę wersji na plikach tekstowych. System powstał na Wydziale Informatyki Uniwersytetu Purdue w Indianie. RCS zarządza grupami tzw. wydań (rewizji). Przez grupę rewizji rozumie się pewien zbiór dokumentów tekstowych powiązanych ze sobą w ten sposób, że kolejne pliki powstają przez modyfikacje istniejących. System RCS organizuje tak rozumiane wydania w drzewo, przedstawiające historię ich zmian. Automatyzuje proces tworzenia i przechowywania kolejnych wersji projektu oraz zapewnia mechanizmy pozwalające na dokładne określanie różnic pomiędzy wersjami pliku i ich scalanie. Wszystkie zmiany w kolejnych wersjach są rejestrowane i dokumentowane, co umożliwia uzyskanie pełnej historii zmian. Ten mechanizm realizacji zadań kontroli wersji opisuje również pozostałe grupy systemów niebędących lokalnymi. Wprawdzie RCS był tworzony z myślą głównie o zarządzaniu wersjami kodu źródłowego programów, ale w praktyce pracuje z dowolnymi plikami tekstowymi. Oznacza to, że może znaleźć zastosowanie w zarządzaniu dokumentami napisanymi w językach opisu tekstu, HTML czy XML. Wynika z tego, że RCS jest w stanie 226

zarządzać nie tylko wersjami kodu programów, lecz także dokumentacją w różnych formatach. Zdecydowanie częściej od przedstawionej grupy lokalnych systemów kontroli wersji korzysta się z systemów scentralizowanych opartych na architekturze typu klient serwer. Systemy takie jak CVS, Subversion czy Perforce składają się z jednego serwera, który zawiera wszystkie rewizje monitorowanych plików oraz klientów, którzy mogą się z nim łączyć i uzyskać dostęp do najnowszych wersji gromadzonych danych. Przez wiele lat był to standardowy model systemu kontroli wersji (rys. 2). Tego rodzaju rozwiązania są szczególnie popularne tam, gdzie wiele osób pracuje na udostępnionych danych. Co więcej, każdy może się zorientować, co robią inni deweloperzy, a wręcz bardzo często w projektach wykorzystuje się automatyczne powiadomienia o postępach pracy, które są rozsyłane do wszystkich współpracowników. Dodatkowo administratorzy mają dokładną kontrolę nad uprawnieniami poszczególnych użytkowników, co okazuje się być przydatne w rozległych projektach w celu ochrony informacji. Wówczas każdy pracownik posiada dostęp jedynie do niezbędnych części dokumentacji. Rys. 2. Zobrazowanie przechowywania danych w systemie typu klient serwer W grupie systemów klient-serwer niewątpliwie jedno z czołowych miejsc zajmuje aplikacja SVN, która jest rozpowszechniana na zasadach licencji Apache i jest jednocześnie chyba najpopularniejszym systemem kontroli wersji. W przeciwieństwie do CVS-a, SVN umożliwia śledzenie nie tylko zmian samej zawartości plików, lecz także nazw katalogów i plików oraz ich położeń. SVN zapewnia również działanie w transakcjach, zabezpieczając ważne operacje przed przerwaniem w trakcie ich wykonania. W przypadku SVN-a interfejsem ułatwiającym jego używanie jest TortoiseSVN. Jest to zestaw narzędzi rozpowszechnianych na zasadach licencji GNU General Public License, które umożliwiając dostęp do SVN-a z poziomu menedżera plików (rys. 3). 227

MECHANIK 7/2014 Rys. 3. Interfejs TortoiseSVN Ostatnia grupa to systemy rozproszone pozwalające na pracę w sieci P2P (z ang. Peer to Peer). Podstawową ich cechą jest to, że repozytoria danych przechowywane są zarówno na serwerze, jak i na komputerach użytkowników. Pozwala to na szybkie odtworzenie straconych danych. Rozproszone systemy kontroli wersji (z ang. często oznaczone jako DVCS Distributed Version Control System) to najczęściej Git, Mercurial, Bazaar lub Darcs. W tych systemach klienci nie dostają dostępu jedynie do najnowszych wersji plików, ale w pełni kopiują całe repozytorium. Gdy jeden z serwerów używanych przez te systemy do współpracy ulegnie awarii, repozytorium każdego klienta może zostać po prostu skopiowane na serwer w celu przywrócenia go do pracy (rys. 4). Rys. 4. Zobrazowanie przechowywania danych w systemie rozproszonym 228

MECHANIK 7/2014 Jak wspomniano wcześniej, jednym z reprezentantów systemów rozproszonych jest GIT. Jest rozpowszechniony na open-source owych zasadach licencji GNU GPL 2. Rozpoczęcie pracy z GIT em jest uznawane za bardzo proste dzięki pośrednictwu serwisów takich jak GitHub czy BitBucket (BitBucket jest często używany również na potrzeby innych aplikacji, np. Mercuriala). GitHub posiada dzisiaj ponad trzy miliony użytkowników oraz ponad pięć milionów repozytoriów. Oprogramowanie to umożliwia zarejestrowanym użytkownikom hostowanie i wersjonowanie plików na zasadach darmowych lub płatnych. Pomimo przedstawionego podziału systemów kontroli wersji, podstawową zaletą wszystkich jest możliwość stałego śledzenia rozwoju aplikacji, powrotu do wcześniejszych wersji oprogramowania, a także merge owania branchy (opisanych w dalszej części artykułu) rozwijanych przez kilku użytkowników. Oprogramowanie służy niekiedy również szeroko pojętym celom projektowym, na przykład do gromadzenia całości materiałów i dokumentacji, tj. grafik, harmonogramów czy specyfikacji technicznych. W przypadku współczesnego oprogramowania, najistotniejsze wydają się zmiany w kodzie źródłowym, dokumentacji czy plikach konfiguracyjnych. Dlatego też system kontroli zmian zachodzących w oprogramowaniu jest bezcennym narzędziem dla szeroko rozumianych deweloperów. 3. SYSTEM PERFORCE W ZASTOSOWANIACH Podczas rozwijania i implementacji oprogramowania pojawia się istotny problem kontroli, rejestrowania i dokumentowania zmian dokonywanych przez uczestników projektu. System kontroli wersji Perforce okazuje się niezwykle przydatny nie tylko w przypadku pracy wielu projektantów nad tym samym dokumentem, lecz także w przypadku, gdy testuje się różne rozwiązania programowe, np. moduły sterowników, które zależne są od struktury platformy sprzętowej, i ze względu na objętość kodu źródłowego implementuje się tylko niezbędne procedury. Do obsługi Perforce a najczęściej wykorzystuje się wieloplatformowy graficzny interfejs użytkownika oznaczony jako P4V. Interfejs P4V łączy komputer z serwisem Perforce a i pozwala przenosić pliki między przestrzenią serwera a przestrzenią roboczą, jak pokazano na rys. 5. Rys. 5. Wymiana danych w systemie kontroli wersji Perforce (* z ang. workspace) Więcej informacji o Perforce i P4V można znaleźć w dokumentacji [1, 2]. Podczas pracy z systemami kontroli wersji należy rozróżniać następujące definicje: 229

workspace, inaczej obszar roboczy, który zawiera foldery, katalogi oraz pliki danych umieszczonych lokalnie na stacji PC, w którym operuje się na wersjach plików zarządzanych przez Perforce a, depot (repozytorium plików), inaczej baza danych, w której zapisywane są wszelkie zmiany. Zawiera wszystkie istniejące wersje plików, które zostały kiedykolwiek utworzone, branch (gałąź) jest izolowaną kopią projektu znajdującą się w repozytorium. Podstawową cechą każdej gałęzi jest to, że zmiany nie wpływają na resztę projektu do czasu, gdy nie zostaną przez kogoś scalone (merge owane). Gałęzie bywają także nazywane liniami rozwoju. Nawet gdy projekt nie posiada wielu gałęzi, mówi się, że rozwój odbywa się na głównej gałęzi, także nazywanej pniem (z ang. trunk). Gałęzie dają możliwość odizolowania od siebie różnych linii rozwoju. Na przykład gałąź może powstać na potrzeby eksperymentalnego kodu, który mógłby zdestabilizować całość opracowywanego oprogramowania, merge/integrate to operacje przeniesienia zmian plików z jednej gałęzi na inną. Chodzi zarówno o scalanie zmian z głównej gałęzi do innej, jak i na odwrót. Scalanie posiada jeszcze jedno podobne znaczenie. Mianowicie przypadek, w którym dwóch użytkowników dokona modyfikacji pliku w tym samym czasie. Zmiany te z reguły nie zachodzą na siebie i są automatycznie scalane. Użytkownik musi jedynie zaktualizować wersje dostępnego pliku. To bardzo częsta sytuacja, szczególnie w projektach, w których wiele osób pracuje nad tym samym kodem. Gdy dwie różne zmiany zachodzą na siebie, pojawia się konflikt. Wówczas niezbędna jest integracja kodu, która musi zostać przeprowadzona przez członka zespołu. Zalety oprogramowania Perforce zdecydowano się wykorzystać w projekcie tworzenia autonomicznej jednostki systemu lokacji noda opartego na architekturze procesora ARM. Tematyka projektu nie będzie szerzej omawiana, gdyż głównym celem artykułu jest opis wykorzystania systemu kontroli wersji. Niemniej jednak zmiany sprzętowe dokonywane w czasie trwania projektu oraz możliwości testowania projektowanych algorytmów lokacji i sterowników wymusiły wykorzystanie Perforce a, co okazało się być niezwykle przydatne. Jedną z podstawowych zalet była możliwość monitorowania zmian, ich szczegółowego opisu oraz szybkiej lokalizacji potrzebnych plików. Co więcej bezpośrednia integracja systemu kontroli wersji ze środowiskiem programistycznym znacząco ułatwiła archiwizowanie i zapisywanie danych. Zapewniono w ten sposób niemal automatyczny dostęp do potrzebnej wersji rozwijanego oprogramowania. Każdy z programistów uczestniczący w projekcie pracował na odpowiedniej, często różnej wersji zaimportowanego i niezbędnego pliku danych, tworząc tzw. change listy (rys. 6). W ten sposób zapewniono szybką oraz bezkonfliktową pracę, jak i identyfikację opracowywanych rozwiązań. Należy tutaj również wspomnieć, że wykorzystano odpowiedni sposób weryfikacji poprawności tworzonego i zapisywanego kodu, który między innymi przewidywał zapis jedynie skompilowanego oraz przetestowanego oprogramowania. Wszelkie nieprzetestowane wersje kodu aplikacji występowały w postaci wersji lokalnych u każdego z programistów. 230

MECHANIK 7/2014 Rys. 6. Przykładowa change lista modyfikowanych plików W systemie Perforce szczególnie wygodny okazuje się również podgląd wykorzystywanych i kontrolowanych plików, co przedstawia rys. 7. Rys. 7. Główny widok systemu Perforce *1 okno historii zmian pliku, *2 szczegółowy opis zmian, *3 drzewko rewizji plików Podczas pracy wykorzystano również szereg przydatnych funkcji. Jedną z nich była możliwość podglądu historii zmian dokonywanych przez projektantów. Każda z zapisanych zmian opatrzona była opisem, który pozwalał na identyfikację wykonanych modyfikacji. Ważną i przydatną zaletą w zarządzaniu plikami okazał się powrót do poprzedniej wersji pliku, przed zmianami. Bardzo szybko można było zlokalizować potrzebny plik, wykorzystując opcję Revision Graph dostępną w środowisku Perforce (rys. 8). 231

Rys. 8. Opcja Revision Graph lokalizacja zmian pliku W czasie realizacji projektu bardzo często zachodziła potrzeba migracji i integracji powstałego oprogramowania. Ze względu na równoległą pracę programistów, bardzo często wykorzystywano opcję Diff Against Have Revision, która umożliwia porównanie interesujących nas plików (rys. 9). W ten sposób uzyskano szybką możliwość oceny zmian wykonanych przez pozostałą część zespołu oraz weryfikację zgodności. Ponadto możliwość podglądu listy modyfikacji umożliwiała śledzenie postępów prac. Dodatkowo funkcjonalność ta kilkakrotnie przyspieszyła proces lokalizacji niepotrzebnych lub wadliwych części oprogramowania (rys. 10). Rys. 9. Operacja Diff Against Have Revision weryfikacja zmian 232

Rys. 10. Lista przeprowadzonych modyfikacji 4. PODSUMOWANIE Zarządzanie kodem źródłowym w trakcie realizacji projektu jest jednym z najważniejszych aspektów, które mogą z pewnością uprościć, przyspieszyć i co ważniejsze zabezpieczyć dokumentację projektu, co w dalszej perspektywie może decydować o powodzeniu lub porażce przedsięwzięcia. W przypadku dużych projektów system kontroli wersji powinien być także wpleciony w całościowy proces realizacji zadań i połączony m.in. ze środowiskiem deweloperskim. Podstawowym zadaniem systemu kontroli wersji jest składowanie kolejnych wersji kodu źródłowego, umożliwienie jednoczesnej pracy wieloosobowym zespołom programistycznym, minimalizując konflikty zmian kodu, a także łatwe odwoływanie się do dowolnej wersji kodu. Taki system działa jednocześnie jako kopia zapasowa oraz archiwum wszystkich zmian kodu. Wybór systemu nie jest łatwy, szczególnie przy większych projektach, gdzie złe rozwiązanie może mieć duży wpływ na wygodę i wydajność pracy. Obecnie systemów jest wiele. Główną uwagę poświęcono na pokazanie kilku aspektów wykorzystania systemu Perforce. Kontrola wersji jest uniwersalna, ponieważ pomaga praktycznie w każdym aspekcie projektu: w komunikacji między programistami, zarządzaniu wydaniami, śledzeniu błędów, stabilizacji kodu czy eksperymentowaniu. Może także służyć do uwierzytelniania i przypisywania zasług poszczególnym programistom. System kontroli wersji stanowi centralny punkt we wszystkich wspomnianych obszarach. Podstawą systemu kontroli wersji jest zarządzanie zmianami, pozwalające odróżnić każdą atomową zmianę w plikach projektu, tworząc metadane z nią związane, i przekazać ją do innych użytkowników w sposób, w jaki sobie tego zażyczą. To kanał komunikacyjny, w którym podstawową jednostką informacji jest pojedyncza zmiana. 233

LITERATURA [1] http://www.perforce.com/. [2] Perforce 2013.3: P4 User's Guide. http://www.perforce.com/perforce/doc.current/manuals/p4guide/p4guide.pdf. 234