System wersji równoległych — Concurrent Versions System
Deweloper(zy) | Zespół CVS |
---|---|
Pierwsze wydanie | 19 listopada 1990 |
Wersja stabilna | 1.11.23/08 maja 2008
|
Wersja zapoznawcza | 1.12.13 / 26 lipca 2006
|
Magazyn | |
Napisane w | C |
System operacyjny | Uniksowy , Windows |
Rodzaj | Kontrola rewizji |
Licencja | GPL-1.0-lub później |
Strona internetowa | cvs |
Concurrent Versions System ( CVS , znany również jako Concurrent Versioning System ) to system kontroli wersji pierwotnie opracowany przez Dicka Grune w lipcu 1986 roku.
CVS działa jako interfejs do RCS , wcześniejszego systemu, który działa na pojedynczych plikach. Rozszerza RCS o obsługę śledzenia zmian na poziomie repozytorium oraz model klient-serwer.
Wydany na warunkach Powszechnej Licencji Publicznej GNU , CVS jest wolnym oprogramowaniem .
Projekt
CVS działa jako interfejs do systemu kontroli wersji (RCS), starszego systemu kontroli wersji, który zarządza pojedynczymi plikami, ale nie całymi projektami. Rozszerza RCS o obsługę śledzenia zmian na poziomie repozytorium oraz model klient-serwer. Pliki są śledzone przy użyciu tego samego formatu historii, co w RCS, z ukrytym katalogiem zawierającym odpowiedni plik historii dla każdego pliku w repozytorium.
CVS wykorzystuje kompresję delta do wydajnego przechowywania różnych wersji tego samego pliku. Działa to dobrze z dużymi plikami tekstowymi z kilkoma zmianami z jednej wersji do następnej. Zwykle dzieje się tak w przypadku plików z kodem źródłowym. Z drugiej strony, gdy CVS otrzyma polecenie przechowywania pliku w postaci binarnej, zachowa każdą indywidualną wersję na serwerze. Jest to zwykle używane w przypadku plików nietekstowych, takich jak obrazy wykonywalne, w których trudno jest utworzyć kompaktowe różnice między wersjami.
CVS wyklucza dowiązania symboliczne, ponieważ gdy są przechowywane w systemie kontroli wersji, mogą stanowić zagrożenie dla bezpieczeństwa. Na przykład dowiązanie symboliczne do poufnego pliku może być przechowywane w repozytorium, dzięki czemu poufny plik jest dostępny nawet wtedy, gdy nie jest on zarejestrowany. Zamiast dowiązań symbolicznych można zaewidencjonować skrypty wymagające pewnych uprawnień i świadomej interwencji CVS.
Operacja
CVS oznacza pojedynczy projekt (zestaw powiązanych plików), którym zarządza jako moduł . Serwer CVS przechowuje moduły, którymi zarządza w swoim repozytorium . Programiści nabywają kopie modułów poprzez wyewidencjonowanie . Wyewidencjonowane pliki służą jako kopia robocza , piaskownica lub obszar roboczy . Zmiany w kopii roboczej są odzwierciedlone w repozytorium przez popełnienie im. Do aktualizacji jest nabycie lub scalić zmiany w repozytorium z kopii roboczej.
CVS wykorzystuje architekturę klient-serwer : serwer przechowuje aktualną wersję projektu i jego historię, a klienci łączą się z serwerem w celu "wyewidencjonowania" kompletnej kopii projektu, pracy na tej kopii, a następnie później "odprawić" swoje zmiany. Serwery CVS mogą zezwalać na „anonimowy dostęp do odczytu”, w którym klienci mogą sprawdzać i porównywać wersje z pustym lub prostym opublikowanym hasłem (np. „anoncvs”); tylko zaewidencjonowanie zmian wymaga konta osobistego i hasła w tych scenariuszach. Kilku programistów może jednocześnie pracować nad tym samym projektem, każdy z nich edytuje pliki we własnej „kopii roboczej” projektu i wysyła (lub rejestruje ) swoje modyfikacje na serwer. Aby uniknąć konfliktów, serwer akceptuje tylko zmiany wprowadzone w najnowszej wersji pliku. Oczekuje się zatem, że programiści będą aktualizować swoją kopię roboczą poprzez regularne wprowadzanie zmian innych osób. To zadanie jest w większości obsługiwane automatycznie przez klienta CVS i wymaga ręcznej interwencji tylko w przypadku konfliktu edycji między zaewidencjonowaną modyfikacją a niezarejestrowaną lokalną wersją pliku. Klienci mogą również użyć polecenia „update”, aby zaktualizować swoje lokalne kopie do najnowszej wersji na serwerze. Klienci mogą również porównywać wersje, poprosić o pełną historię zmian lub sprawdzić historyczną migawkę projektu (np. na podstawie podanej daty). Jeśli operacja sprawdzania powiedzie się, numery wersji wszystkich zaangażowanych plików są automatycznie zwiększane, a serwer zapisuje podaną przez użytkownika linię opisu, datę i nazwisko autora w swoich plikach dziennika . CVS może również uruchamiać zewnętrzne, określone przez użytkownika skrypty przetwarzania dzienników po każdym zatwierdzeniu. Skrypty te są instalowane przez wpis w loginfo
pliku CVS , który może wyzwalać powiadomienie e-mail lub konwertować dane dziennika do formatu opartego na sieci WWW.
CVS może również utrzymywać różne "gałęzie" projektu. Na przykład wydana wersja projektu oprogramowania może tworzyć jedną gałąź, używaną do naprawy błędów, podczas gdy wersja w bieżącym rozwoju, z dużymi zmianami i nowymi funkcjami, może tworzyć oddzielną gałąź. CVS zakłada, że większość pracy odbywa się na pniu, a gałęzie powinny być krótkotrwałe lub historyczne. Gdy są używane zgodnie z przeznaczeniem, oddziałami można łatwo zarządzać, a operacje oddziałów są wydajne i szybkie.
Ruchliwość
Oprogramowanie serwera zwykle działa na Unixie (chociaż przynajmniej serwer CVSNT obsługuje również różne odmiany Microsoft Windows ), podczas gdy klienci CVS mogą działać na dowolnej głównej platformie systemu operacyjnego .
Historia
Grune wspominał:
Stworzyłem CVS, aby móc współpracować z moimi studentami, Erikiem Baalbergenem i Maartenem Waage, nad kompilatorem C ACK ( Amsterdam Compiler Kit ). Nasza trójka miała bardzo różne harmonogramy (jeden uczeń był stałym pracownikiem 9-5, drugi był nieregularny, a ja mogłem pracować nad projektem tylko wieczorami). Ich projekt trwał od lipca 1984 do sierpnia 1985. Początkowo CVS nazywał się cmt, z oczywistego powodu, że pozwalał nam na niezależne zatwierdzanie wersji.
Grune opublikował publicznie kod 23 czerwca 1986 roku.
Kod, który ostatecznie przekształcił się w obecną wersję CVS, rozpoczął się od Briana Berlinera w kwietniu 1989 roku, z późniejszym wkładem Jeffa Polka i wielu innych współpracowników. Brian Berliner napisał artykuł przedstawiający jego ulepszenia w programie CVS — opisujący, w jaki sposób narzędzie zostało rozszerzone i użyte wewnętrznie przez Prisma, niezależnego programistę pracującego nad jądrem SunOS, i zostało wydane dla dobra społeczności na licencji GPL. 19 listopada 1990 CVS w wersji 1.0 został przesłany do Free Software Foundation w celu rozwoju i dystrybucji.
Najnowsza wersja została wydana 8 maja 2008 roku.
Adopcja i następcy
W świecie oprogramowania o otwartym kodzie źródłowym system Concurrent Version System (CVS) od dawna jest preferowanym narzędziem do kontroli wersji. I słusznie. CVS sam w sobie jest wolnym oprogramowaniem, a jego nieograniczający sposób działania i obsługa sieci — co pozwala dziesiątkom geograficznie rozproszonych programistów na dzielenie się swoją pracą — bardzo dobrze pasuje do współpracy w świecie open source. CVS i jego pół-chaotyczny model rozwoju stały się kamieniami węgielnymi open-source.
Z biegiem czasu programiści stworzyli nowe systemy kontroli wersji oparte na CVS w celu dodania funkcji, zmiany modelu operacyjnego i poprawy produktywności programistów. Projekty zastępujące CVS obejmują CVSNT i Subversion .
Zobacz też
Uwagi
Bibliografia
- Davida Thomasa ; Andrzeja Hunta (2003). Pragmatyczna kontrola wersji za pomocą CVS . Pragmatyczni programiści. Numer ISBN 0-9745140-0-4.
- Jennifer Vesperman (2006). Niezbędne CVS (wyd. 2e). O'Reilly. Numer ISBN 0-596-52703-9.
- Za Cederqvista; i in. Zarządzanie wersjami za pomocą CVS . Numer ISBN 0-9541617-1-8. Zarchiwizowane od oryginału dnia 2014-08-05 . Źródło 2009-11-25 .
- Karl Franz Fogel; Bar Mosze . Programowanie Open Source z CVS . Numer ISBN 1-932111-81-6. Zarchiwizowane od oryginału dnia 2014-07-16 . Pobrano 2002-02-05 .
Zewnętrzne linki
- Oficjalna strona internetowa
- Zarządzanie wersjami za pomocą CVS : podręcznik do CVS 1.12.13, autorstwa Per Cederqvist et al.