Perforce

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania

Perforce – komercyjny, prawnie zastrzeżony system kontroli wersji opracowany przez Perforce Software Inc.

Architektura[edytuj | edytuj kod]

Serwer Perforce zarządza centralną bazą danych oraz głównym repozytorium wersji plików. Perforce obsługuje zarówno klientów Git, jak i klientów, którzy używają protokołu Perforce. Klient Git może komunikować się z serwerem Perforce poprzez SSH lub HTTPS, a aplikacje klienckie Perforce komunikują się z serwerem za pomocą TCP/IP, używając własnego protokołu RPC. Użytkownicy przekazują zmienione pliki w changelistach. Zmiany są wprowadzane poprzez atomowe transakcje.

Serwer[edytuj | edytuj kod]

Metadane

Baza danych Perforce jest bazą dedykowaną, prekonfigurowaną i instalowaną automatycznie wraz z systemem. Przechowuje powiązane z systemem metadane (stan pliku, atrybuty pliku, historia odgałęzień i mergów, changelisty, opisy zmian, użytkownicy, grupy, etykiety itd.). Pliki są identyfikowane poprzez namespace (np. poprzez nazwy plików neutralne względem systemu operacyjnego). Zawartość samego pliku nie jest przechowywana w bazie danych. W bazie danych przechowywane są skróty MD5 zawartości pliku, które mogą być użyte do weryfikacji integralności pliku.

Tabele bazy danych są przechowywane w postaci plików binarnych. Punkty kontrolne i journale są zapisywane jako pliki tekstowe, które mogą być kompresowane i archiwizowane w innej lokalizacji. Baza danych, która została uszkodzona przez awarię sprzętu lub inną awarię może zostać odzyskana ze świeżego journalu lub punktu kontrolnego.

Magazyn

Wersjonowana zawartość pliku jest przechowywana w katalogu, którego najwyższe poziomy są nazwane „depots”. Wersje pliku tekstowego są przechowywane jako delty RCS (przypis: pomimo, że wersje plików tekstowych są przechowywane jako delty RCS, Perforce nie wykorzystuje systemu RCS do zarządzania plikami), a wersje plików binarnych są przechowywane jako całe pliki.

Kodowanie plików tekstowych odbywa się w standardzie ASCII bądź UTF-8[1], w zależności od konfiguracji serwera Perforce. Pliki w repozytorium nie są szyfrowane. Wersje, które są odgałęzieniami lub kopiami innych wersji są wirtualnymi kopiami w repozytorium. Domyślnie wszystkie wersje są przechowywane bez limitu czasowego ani ilościowego, limity mogą być ustawione przez administratora. Przestarzałe wersje i pliki mogą być usuwane przez administratora.

Oprogramowanie klienckie[edytuj | edytuj kod]

Oprogramowanie klienckie systemu Perforce można podzielić na pięć kategorii: GIT, linia poleceń, GUI, web oraz plugin. System Perforce może udostępnić część bądź wszystkie ze swoich zasobów jako repozytoria Git. Użytkownicy oprogramowania Git, a także innych aplikacji klienckich, mogą pracować na tej samej zawartości i historii. Commity Git są widoczne dla użytkowników innych klientów jako changelisty Perforce, natomiast zmiany wykonane za pomocą klientów Perforce są widoczne jako commity Git.

Oryginalnym klientem do zarządzania za pomocą linii poleceń jest P4. Może on być używany w dowolnej powłoce poleceń lub w skrypcie. Domyślnie P4 komunikuje się na standardowym wyjściu w formie czytelnej dla człowieka, jednak może zostać tak skonfigurowany, aby komunikaty wyjścia były otagowanym tekstem bądź marshallowanym wyjściem Pythona czy Ruby. Do komunikowania się z Perforce dostępne są też natywne API C++ i Javy, a także dodatki zbudowane na bazie API C++[2] do komunikacji przy pomocy Lua, Perl, Python, PHP, Objective-C oraz Ruby.

Użytkownicy systemu Perforce mogą korzystać z wieloplatformowego graficznego klienta P4V bazującego na Qt. Natomiast do zadań administracyjnych służy graficzny klient P4Admin.

Środowiska programistyczne, takie jak Eclipse[3] czy Visual Studio[4] mogą komunikować się z Perforce za pomocą wtyczek, natomiast Intellij IDEA w wersji Ultimate posiada własny dodatek pozwalający na integrację z Perforce.

Interfejs webowy dostarczany jest przez P4Web[5], który jednocześnie jest klientem Perforce oraz serwerem HTTP. P4Web może funkcjonować jako serwer www umożliwiający odczyt repozytorium oraz metadanych Perforce. Po zainstalowaniu na komputerze użytkownika może spełniać rolę lokalnego klienta Perforce z pełnymi uprawnieniami odczytu oraz zapisu.

Dzięki rozbudowanemu interfejsowi wtyczek Perforce udostępnia swoje zasoby narzędziom programistycznym, klientom SQL, FTP i wielu innym.

Rozproszony i zdalny system kontroli wersji[edytuj | edytuj kod]

Perforce ma cztery mechanizmy zapewniające kontrolę wersji dla rozproszonych i pracujących zdalnie zespołów; te mechanizmy mogą być używane niezależnie lub w różnych kombinacjach.

Pierwszym z nich jest serwer proxy, który przechowuje często otwierane wersje w celu ograniczenia czasu dostępu do plików dla zdalnych pracowników. Ten mechanizm jest przeznaczony dla zespołów ściśle ze sobą współpracujących deweloperów, które wymagają centralnie kontrolowanego repozytorium plików i dostępnej zdalnie bazy danych.

Drugi mechanizm, znany jako remote depot, pozwala użytkownikom podłączonym do jednego serwera na korzystanie z zasobów udostępnionych przez inne serwery. Z remote depot każda organizacja ma kontrolę nad swoim własnym serwerem i może sprawić, aby część lub wszystkie z jej repozytoriów były widoczne dla innych serwerów. Ten mechanizm jest wykorzystywany w zespołach, w których współpraca przebiega na luźniejszych zasadach – gdzie większy nacisk kładzie się na komunikację i wymianę informacji peer-to-peer.

Trzeci mechanizm, znany jako replikacja[6], kopiuje 1:1 wszystkie lub niektóre z danych przechowywanych w repozytorium do innego serwera. Repliki zlokalizowane bliżej użytkowników zapewniają krótszy czas dostępu do danych.

Wreszcie, Perforce może być replikowany do repozytoriów Git przy użyciu standardowego protokołu Git i poleceń Git.

Cechy[edytuj | edytuj kod]

  • Kompletna historia plików i metadanych
  • Pełna historia wersji dla plików z odgałęzieniami, zmienionymi nazwami, skopiowanych, a także usuniętych
  • Trójdrożne merge plików tekstowych, śledzenie merge i zabezpieczenie przed ponownym merge
  • Graficzne diffy i merge
  • Graficzny podgląd historii zawartości pliku i historii odgałęzień
  • Graficzny interfejs administracyjny
  • Miniaturki obrazków
  • Scentralizowane repozytorium z kontrolą dostępu oraz z obsługą rozproszonej kontroli wersji
  • Changelisty – zmienione pliki mogą być grupowane i śledzone razem
  • Atomowe commity – atomowe transakcje atomowe dają pewność, że wszystkie zmiany w changeliście są w całości scommitowane
  • Shelving – użytkownicy mogą zapisywać postępy pracy i po czasie rozpoczynać pracę w zapisanym wcześniej miejscu
  • Wsparcie dla plików binarnych, ASCII, Unicode, linków symbolicznych (dla systemów *nix), UTF-16 oraz plików specyficznych dla systemów Mac
  • Wsparcie dla internacjonalizacji i lokalizacji
  • Wsparcie dla słów kluczowych w stylu RCS
  • Kompresja plików zastosowana do przechowywania w repozytorium oraz przesyłania w sieci
  • Wieloplatformowość – jeden serwer Unix lub Windows może obsługiwać klientów w każdym systemie operacyjnym
  • Triggery zdarzeń po stronie serwera
  • Programowalny klient wiersza poleceń oraz API
  • SDK do integracji z systemami zewnętrznymi
  • Powiadomienia o zmianach za pomocą RSS
  • Replikacja plików i metadanych[7] w celu tworzenia kopii zapasowych i poprawy wydajności
  • Broker pozwalający wdrażać lokalne polityki zabezpieczeń, ograniczać dostępne polecenia bądź przekierowywać polecenia na alternatywne serwery[8]
  • Archiwizowanie plików, aby odzyskać miejsce na dysku serwera[9]
  • Szyfrowane połączenia SSL pomiędzy klientami a serwerem[10]

Dostępność[edytuj | edytuj kod]

Korzystanie z serwera Perforce jest bezpłatne maksymalnie dla 20 użytkowników / 20 miejsc pracy i wówczas ilość plików jest nieograniczona lub dla nieograniczonej liczby użytkowników i wówczas maksymalna liczba plików to 1000, bez licencji. Licencja musi zostać zakupiona w przypadku większej liczby użytkowników lub miejsc pracy. Licencję można nabyć na własność lub na zasadzie subskrypcji. Silnik wersjonowania Perforce, klienci, pluginy, narzędzia i API także są dostępne za darmo[11].

Licencje darmowe są dostępne dla organizacji rozwijających oprogramowanie open source, dla szkolnych projektów oraz na czas testowania oprogramowania. Korzystanie z aplikacji klienckich i pluginów jest nieograniczone, podobnie jak dostęp online do dokumentacji technicznej Perforce[12].

Serwer i oprogramowanie klienckie są wydawane w postaci gotowych plików wykonywalnych dla Microsoft Windows, OS X, Solaris, FreeBSD i innych systemów operacyjnych.

Przypisy[edytuj | edytuj kod]