CVS - podstawy - Koło Naukowe Systemów Open Source
Transkrypt
CVS - podstawy - Koło Naukowe Systemów Open Source
CVS - podstawy Koło Naukowe Systemów Open Source Wyzsza Szkoła Biznesu - National-Louis University Krzysztof Walo [email protected] Czym jest CVS? CVS to system kontroli wersji. Służy do zapisywania i przechowywania zmian w plikach źródłowych . Umożliwia wielu programistom pracę nad jednym projektem. Zapewnia dostęp do źródeł w dowolnej wersji. Synopsis: I\Y AI\Y UVZOUTYC IUSSGTJ AIUSSGTJ UVZOUTYC AIUSSGTJ GXMYC cvs options - Opcje globalne. Mają wpływ na wszystkie komendy command - Komenda. Ma główny wpływ na zachowanie programu command options - Opcje dla danej komendy command args - Argumenty - najczęściej jest to plik (katalog), lista plików, albo moduł Pomoc - Pomoc na temat opcji globalnych I\Y NKRV UVZOUTY - Lista wszystkich komend I\Y NKRV IUSSGTJY - Opcje pojedynczej komendy I\Y . IUSSGTJ Pobieranie źródła CVS w przeciwieństwie do innych systemów kontroli wersji, nie blokuje tych plików, które są poddawane edycji. Ściąga za to źródła w odpowiedniej wersji z repozytorium do katalogu roboczego. Komenda: I\Y J A SKZUJG C YIOK`QG JU XKVU`_ZUXO[S INKIQU[Z SUJ[R Pobiera źródła w najnowszej wersji z gałęzi głównej. Metoda określa sposób dostępu do repozytorium. Główne metody dostępu: * :local: - dostęp do zasobów lokalnych * :ext: - zasoby zewnętrzne * :server: - jak wyżej * :pserver: - dostęp chroniony hasłem Moduł to jakiś katalog ze źródłami, znajdujący się w repozytorium. Ścieżkę do repozytorium można zapisać w zmiennej środowiskowej CVSROOT: K^VUXZ )<9855:# YIOK`QG JU XKVU`_ZUXO[S I\Y INKIQU[Z SUJ[R Usuwanie źródeł Komenda: I\Y XKRKGYK J QGZGRUM Usuwa źródła i sprawdza, czy wszystkie pliki są zatwierdzone. Zatwierdzanie plików zastępuje w pewnym sensie blokowanie w innych systemach kontroli wersji. Tworzenie nowego repozytorium Repozytoria to miejsca, gdzie cvs przechowuje pliki historii, oraz inne pliki konfiguracyje. Stąd są pobierane źródła w odpowiedniej wersji do katalogu roboczego. Repozytorium powinno być dostępne (lokalnie, lub przez jakieś połączenie) z wszystkich miejsc, które chcą z niego kożystać. Ilość miejsca na dysku powinna być trzykrotnie większa niż szacowany rozmiar projektu. Repozytorium tworzy się komendą: I\Y J [YX RUIGR I\YXUUZ OTOZ Opcja '-d' możne być zastąpiona zmienną środowiskową CVSROOT. W katalogu CVSROOT, w repozytorium znajdują się różne pliki konfiguracyjne. W pozostałych katalogach, są pliki historii. Pliki historii są zakończone ',v'. Tam są przechowywane wszystkie informacje o zmianach, jakie były przeprowadzone. Dodawanie projektu do repozytorium Przykładowo, jeśli mamy źródła w katalogu ~/myproj i chcemy je dodać do repozytorium cvs, wykonujemy nast. komendy: IJ d S_VXUP I\Y J [YX RUIGR I\YXUUZ OSVUXZ VXUPKQZ_ S_VXUP S_VXUP YZGXZ Cvs otworzy edytor teksu, aby wpisać wiadomość do historii. Edytor można zdefiniować w zmiennej środowiskowej EDITOR, jeśli zmienna nie jest zainicjowana, zostanie użyty vi. Zamiast otwierać edytor, można podać wiadomość po opcji '-m', np. I\Y J [YX RUIGR I\YXUUZ OSVUXZ S /SVUXZ S_VXUP VXUPKQZ_ S_VXUP S_VXUP YZGXZ Kolejne argumenty 'projekty/myproj' to nazwa modułu, myproj i start to odpowiednio: główny tag (vendor tag) i tag wydania (release tag). Zatwierdzanie zmian W przeciwieństwie do większości systemów kontroli wersji, CVS nie tworzy blokad na plikach, które podlegają edycji, tylko tworzy kopie robocze, na których developerzy pracują niezależnie. Po skończonej pracy, zmiany należy zatwierdzać. Do zatwierdzania zmian, służy polecenie: I\Y IUSSOZ S 1USKTZGX` VROQ Jesli nie użyje się opcji -m, cvs otworzy edytor, aby wpisać komentarz do wprowadzonych zmian. Edytor możemy wybrać, ustawiając zmienną środowiskową EDITOR. Jeżeli wielu programistów pracuje nad jednym plikiem, może zajść sytuacja, kiedy będziemy próbowali zatwierdzić plik, który został zmodyfikowany przez kogoś innego. Należy wtedy przywrócić plik do najnowszej wersji (np. komendą update), nałożyć swoje zmiany i ponownie próbować zatwierdzić. Jeśli nie mamy praw zapisu w repozytorium, możemy wysłać developerowi wynik polecenia: I\Y JOLL VROQ Polecenie to wyświetla na ekran różnice między lokalnie zmodyfikowanym, a ostatnio zatwierdzonym plikiem. Zmiany te można dodać do pliku za pomocą polecenia patch. Dodawanie/usuwanie plików Do dodawania/usuwania plików do/z repozytorium służą komendy: I\Y GJJ I\Y XKSU\K Dodawanie: Zanim dodamy jakiś plik musimy go stworzyć w katalogu roboczym: ZU[IN VROQ I\Y GJJ VROQ I\Y IUSSOZ VROQ @GZ]OKXJ`GS_ `SOGT_ Usuwanie: XS VROQ I\Y XKSU\K VROQ I\Y IUSSOZ VROQ Katalogów w cvs nigdy nie usuwamy!!! Spowodowałoby to, że nie możnaby odzyskać źródeł sprzed usunięcia katalogu! Zamiast tego usuwamy/przenosimy wszystkie pliki z katalogu, który chcemy 'usunąć'. Podczas pobierania źródeł do komend update, albo checkout dodajemy opcję -P. I\Y [VJGZK 6 Dzięki temu cvs nie pobierze pustych katalogów. Jeśli chcemy pobierać puste katalogi z opcją -P, można w nich utworzyć ukryte pliki, np. ZU[IN V[YZ_EQGZGRUM `GINU]GPESTOK I\Y IUSSOZ V[YZ_EQGZGRUM `GINU]GPESTOK Tagi Tagi służą do nadawania nazw zatwierdzonym plikom. Dzięki nim można mieć dostęp do poprzednich wersji plików, tworzyć gałęzie, itp. Rozróżniamy następujące rodzaje tagów: * Rewizje - każdy plik otrzymuje numer rewizji, wzrasta on za każdym razem, kiedy zatwierdzamy plik. Numer jest przydzielany automatycznie * symboliczne tagi - nadają nazwy odpowiednim numerom rewizji * tagi gałęzi - nazwy nadawane gałęziom projektu Rewizje Rewizje to numery, które identyfikują wersję pliku. Numery rewizji mają zawsze nieparzystą ilość kropek. Przykładowe numer rewizji: Za każdym razem kiedy zatwierdzamy jakiś plik, ostatnia liczba w numerze rewizji jest zwiększana o 1. Rewizje, które mają więcej niż jedną kropkę, reprezentują pliki w gałęziach. Przypisywanie numerów rewizji: Z reguły nie ma potrzeby zmieniać numerów rewizji. Jest to jednak możliwe. Jeżeli np. mamy program, który doczekał się wersji 2.0, możemy przypisać wszystkim plikom numer rewizji 2.0. Wydajemy komendę w katalogu roboczym: I\Y IUSSOZ X Przydzielanie tagów Plikom o odpowiednim numerze rewizji, można nadawać symboliczne nazwy - tagi. Nazwy tagów nie mogą się składać z białych znaków. Do przydzielania tagów plikom o numerach rewizji aktulanie znajdującym się w repozytorium służą komendy: I\Y ZGM TG`]G ZGM[ VROQ I\Y XZGM TG`]G ZGM[ SUJ[R Komenda 'rtag' operuje wyłącznie na modułach, a 'tag' na plikach. Tagi można przydzielać także innym wersjom plików, np. I\Y ZGM X VOKX]Y`_ VROQ Przydziela tag 'pierwszy' plikowi 'plik' o numerze rewizji '1.1'. Jeśli projekt posiada numery wydania, każde wydanie powinno mieć swój tag. Tagi dla wydania powinny mieć specjalne nazewnictwo, np. nazwa i numer wydania oddzielony znakiem minus, zamiast kropki. Przydzielenie tagów dla wersji: I\Y XZGM XKR S_VXUP Przeglądanie, wybieranie tagów Przeglądanie: I\Y YZGZ[Y \ VROQ Wyświetla wszystkie tagi, jakie zostały przypisane do pliku. Wybieranie: Wiedząc jakie plik ma przypisane tagi, można ściągnąć projekt w odpowiedniej wersji: I\Y INKIQU[Z X ZGM VROQ Np. jeśli chcemy zobaczyć projekt w wersji 1.0, możemy użyć polecenia: I\Y INKIQU[Z X XKR SUJ[R Usuwanie, przenoszenie, zmienianie nazw tagów Zwykle nie należy modyfikować nazw tagów. Służą one do wydobywania informacji z poprzednich wersji plików. Jedyne dopuszczalne przypadki, to kiedy się popełni błąd przy nadawaniu nazwy. Usuwanie: I\Y ZGM J ZGM VROQ Przenoszenie: I\Y ZGM X , YZGHRK VROQ Przenosi tag 'stable' z pliku o numerze rewizji 1.4 na aktualnie używany plik. Zmienianie nazwy: Zmiana nazwy polega na przeniesieniu starej nazwy na nową i usunięciu starej nazwy. I\Y ZGM X YZGX_ , TU]_ VROQ I\Y ZGM J YZGX_ VROQ Sticky tags Sticky tags występują, kiedy używamy opcji -r przy komendach checkout, lub update. Zwykle odpowiadają gałęzi, albo uniemożliwiają modyfikację jakiegoś pliku/katalogu. Sprawdzanie, czy występują: I\Y YZGZ[Y VROQ Usunięcie 'sticky tags': I\Y [VJGZK ' Jeśli chcemy pobrać plik w odpowiedniej wersji, ale bez przypisywania 'sticky tag': I\Y [VJGZK V X ZGM VROQ $ VROQ Opcja '-p' wypisuje zawartosc pliku na standardowe wyjście. Za pomocą operatora przekierowania '>' wynik polecenia cvs wstawiany jest do pliku 'plik'. Gałęzie i scalanie Gałęzie służą do tworzenia osobnej częsci projektu. Zmiany nanoszone w gałęzi nie mają wpływu na zmiany w gałęzi głównej. Gałęzie tworzymy komendą: I\Y ZGM H TG`]G MGRK`O VROQ Gałąź możemy scalić z główną gałęzią projektu. Scalanie polega na wprowadzeniu zmian między miejscem rozdzielenia, a ostanio zmodyfikowanym plikiem gałęzi do gałęzi głównej. Scalanie do gałęzi głównej: I\Y [VJGZK P TG`]G MGRK`O VROQ Dobrze jest oznaczyć miejsce scalenia tagiem: I\Y ZGM UYZGZTOK YIGRKTOK VROQ W ten sposób przy ponownym scalaniu, można się posłużyć tym tagiem do określenia miejsca, względem którego będziemy scalać: I\Y [VJGZK P UYZGZTOK YIGRKTOK P MGRG` VROQ Numey gałęzi Numery gałęzi są podobne do numerów rewizji. Składają się z liczb oddzielonych parzystą liczbą kropek. Numery rewizji plików, znajdujących się w gałęzi mają dołączoną po kropce liczbę. Np. gałąź o numerze 1.2.4 może mieć pliki o numerach rewizji 1.2.4.1, 1.2.4.2, itd. Pliki znajdujące się w gałęzi oznaczonej tym samym tagiem mają różne numery gałęzi.