CVS system kontroli wersji
Agenda Podstawowe pojęcia Podstawowe polecenia Metody dostępu do repozytorium Konfiguracja i używanie aplikacji klienckich Konflikty i ich rozwiązywanie Dodatkowe możliwości Pliki binarne Praca z repozytorium na knipie Dodatkowe informacje
Podstawowe pojęcia Kontrola wersji śledzenie zmian w kodzie źródłowym programów dokonanych przez wiele osób w różnych momentach; przechowuje całą historię zmian w kodzie Repozytorium centralne miejsce, w którym przechowywane są informacje o plikach objętych kontrolą wersji Moduł wydzielony katalog na pliki danego projektu
Podstawowe pojęcia Rewizja numer identyfikujący plik, niesie ze sobą informacje o wersji pliku i jego historii zmian Katalog roboczy katalog zawierający kopię modułu (projektu), miejsce w którym każdy może dokonywać zmian, a następnie wprowadzać je do repozytorium
Podstawowe polecenia Składnia: cvs [-opcje_ogólne] polecenie [-opcje_polecenia][argumenty] checkout commit update add remove status
Podstawowe polecenia c.d. log diff annotate rls import
Podstawowe polecenia :: checkout checkout (co) tworzy katalog roboczy i pobiera z repozytorium pliki należące do danego modułu (projektu) cvs checkout nazwa_modułu
Podstawowe polecenia :: checkout
Podstawowe polecenia :: checkout Przydatne opcje dla polecenia checkout: c wyświetla listę modułów dostępnych w repozytorium (o ile administrator uaktualnił bazę danych modułów) cvs checkout -c d nowy_katalog zapisuje moduł do katalogu 'nowy_katalog' cvs checkout modul -d moj_modul
Podstawowe polecenia :: checkout cvs checkout -c
Podstawowe polecenia :: commit commit (ci) przeniesienie zmian z katalogu roboczego do repozytorium cvs ci plik
Podstawowe polecenia :: commit
Podstawowe polecenia :: commit Przydatne opcje dla polecenia commit: m komentarz cvs ci -m "komentarz do zmian" nazwa_pliku
Podstawowe polecenia :: update update (up) aktualizuje nasz katalog roboczy pobierając najnowsze lub wybrane przez nas rewizje z repozytorium cvs up
Podstawowe polecenia :: update
Podstawowe polecenia :: update Oznaczenia literowe aktualizowanych plików: U plik został skopiowany z repozytorium P plik został uaktualniony (patched) A plik został dodany do repozytorium R plik został usunięty M plik jest lokalnie zmodyfikowany C wystąpił konflikt? plik nie występuje w repozytorium
Podstawowe polecenia :: update Przydatne opcje dla polecenia update: d tworzy w katalogu roboczym podkatalogi jeżeli zostały dodane do repozytorium P usuwa z katalogu roboczego puste katalogi C nadpisuje lokalnie zmodyfikowaną kopię pliku najnowszą rewizją z repozytorium
Podstawowe polecenia :: add add dodaje pliki lub katalogi do repozytorium cvs add plik cvs ci plik
Podstawowe polecenia :: add
Podstawowe polecenia :: remove remove usuwa plik lub katalog plik z repozytorium nie jest fizycznie usuwany, tylko ustawiana jest tzw. martwa rewizja, dzięki temu możemy później przywrócić plik z repozytorium cvs remove plik cvs ci -m "plik nie jest już potrzebny" plik
Podstawowe polecenia :: status status wyświetla informacje o plikach znajdujących się w katalogu roboczym Przydatne opcje dla polecenia status: v wyświetla dodatkowe informacje m.in. etykiety(tags) i odgałęzienia (branches)
Podstawowe polecenia :: status cvs status
Podstawowe polecenia :: status cvs status -v
Podstawowe polecenia :: log log wyświetla całą historię zmian w postaci komunikatów wpisywanych przez użytkownika podczas commitów cvs log plik
Podstawowe polecenia :: log cvs log plik
Podstawowe polecenia :: diff diff wyświetla różnicę pomiędzy dwiema dowolnymi rewizjami cvs diff -u plik wyświetla różnicę pomiędzy najnowszą rewizją pliku z repozytorium, a plikiem znajdującym się katalogu roboczym cvs diff -u -r1.1 plik wyświetla różnicę pomiędzy rewizją 1.1, a plikiem znajdującym się aktualnie w katalogu roboczym cvs diff -u -r1.1 -r1.3 plik wyświetla różnicę pomiędzy rewizją 1.1, a 1.3
Podstawowe polecenia :: diff
Podstawowe polecenia :: annotate annotate (ann) wyświetla informacje o ostatnich modyfikacjach w każdej linii pliku cvs ann plik
Podstawowe polecenia :: annotate cvs ann plik
Podstawowe polecenia :: rls rls wyświetla listę plików i katalogów w repozytorium. Przydaje sie do wyświetlenia modułów znajdujących się w repozytorium (podobnie jak cvs co -c, ale nie wymaga od administratora wpisania do bazy danych listy modułów) cvs rls
Podstawowe polecenia :: rls cvs rls
Podstawowe polecenia :: import import tworzy nowy moduł w repozytorium cvs import -m "Komentarz" module-name vendor-tag realse-tag module name nazwa modułu jest nazwą katalogu w którym będzie przechowywany nasz projekt, tą nazwą będziemy się posługiwali chcąc ściągnąć projekt do naszego lokalnego katalogu vendor tag nazwa opiekuna nazwa osoby dodającej moduł do repozytorium relase tag nazwa wydania nazwa wydania, może być np. start
Podstawowe polecenia :: import
Metody dostępu do repozytorium cvs -d :metoda_dostępu:uzytkownik@hostname:/sciezka/do/repo local dostęp lokalny (repozytorium znajduje sie na lokalnym komputerze) ext dostęp zdalny przy wykorzystaniu zewnętrznej aplikacji do przesyłania danych. Najczęściej wykorzystuje się ssh (tak jest na knipie) pserver dostęp zdalny przy wykorzystaniu serwera haseł metoda ta nie wymaga konta na serwerze, ale jest mniej bezpieczna, niż ta z wykorzystaniem ssh przy metodzie :ext:
Konfiguracja i używanie programów klienckich cvs standardowy klient linuksowy Zamiast używać opcji d można ustawić zmienną systemową CVSROOT CVSROOT="local:/var/cvsroot" w przypadku korzystania z metody zdalnej przez ssh należy ustawić następujące zmienne systemowe: CVSROOT=":ext:mitek@knip.pol.lublin.pl:/var/cvsroot" CVS_RSH="ssh"
Konfiguracja i używanie programów klienckich WinCVS WinCVS jest klientem pod windowsa. Składa się z konsolowego klienta cvsnt oraz graficznej nakładki. Instalacja http://www.wincvs.org strona domowa http://knip.pol.lublin.pl/pliki/wincvs2_0_2 4.zip http://www.python.org python wymagany jest do używania konsoli w graficznym interfejsie
Konfiguracja i używanie programów klienckich WinCVS :: Konfiguracja Utworzenie i ustawienie katalogu do pracy np. cvs projekty
Konfiguracja i używanie programów klienckich WinCVS :: Konfiguracja Wybór domyślnego edytora Admin > Preferences > WinCVS > Default editor
Konfiguracja i używanie programów klienckich WinCVS :: Konfiguracja Pobranie modułu z repozytorium Remote > Checkout module Podanie nazwy modułu: Module name and path on the server: test Katalog do którego pobrany zostanie moduł: Local folder to checkout to: ścieżka do katalogu na nasze projekty
Konfiguracja i używanie programów klienckich WinCVS :: Konfiguracja Ustawienie zmiennej CVSROOT Protocol: ssh Repository: /var/cvsroot Username: nazwa_uzytkownika Hostname: knip.pol.lublin.pl
Konfiguracja i używanie programów klienckich WinCVS :: użytkowanie Pozostałych komend można używać przy pomocy "ikonkowego" interfejsu lub za pośrednictwem konsoli
Konflikty i ich rozwiązywanie Kiedy pojawiają się konflikty wiele osób pracuje jednocześnie nad tym samym plikiem, nad tym samym fragmentem kodu rzadko wykonujemy aktualizację naszego katalogu roboczego
Konflikty i ich rozwiązywanie Przykład konfliktu przy próbie commitu cvs poinformuje, że nie pracujemy na aktualnej wersji pliku i należy wykonać aktualizację (update)
Konflikty i ich rozwiązywanie Przykład konfliktu przy próbie commitu cvs poinformuje, że nie pracujemy na aktualnej wersji pliku i należy wykonać aktualizację (update) podczas aktualizacji (update), cvs próbuje połączyć nasze zmiany z ze zmianami, które zostały wprowadzone do pliku przez inną osobę. Jeżeli nie uda się połączyć zmian, cvs poinformuje nas znakiem C przed nazwą pliku.
Konflikty i ich rozwiązywanie Rozwiązanie konfliktu polega na wyedytowaniu pliku i poprawieniu spornego fragmentu kodu. Cvs odznacza miejsca konfliktu znacznikami <<<<<<< ======= >>>>>>> które są dodatkowo opisane.
Dodatkowe możliwości Etykiety (tags) Odgałęzienia (branches) Plik konfiguracyjny.cvsrc Keywords Mechanizm watch i edit
Etykiety (tags) Tag etykieta, znacznik, nazwa symboliczna, którą można opisać plik lub grupę plików. Etykieta jest przypisywana do konkretnej rewizji. Przykład wykorzystania: cvs tag STABLE_1 przypisanie wszystkim plikom znajdującym się w naszym katalogu roboczym i ich aktualnym rewizjom etykiety STABLE_1
Etykiety (tags) Przykład wykorzystania: cvs tag -r1.1 START nazwa_pliku przypisanie do rewizji 1.1 etykiety START dla pliku nazwa_pliku cvs up -rstable_1 pobranie (zaktualizowanie) z repozytorium plików oznaczonych etykietą STABLE_1
Odgałęzienia (branches) branch gałąź. Są to wydzielone pliki, których rozwój może odbywać się niezależnie od głównego nurtu projektu. Gałęzie mogą być ze sobą łączone. Funkcjonalność ta może być wykorzystana do wprowadzania alternatywnych zmian w kodzie nie zakłócając jednocześnie rozwoju głównej linii projektu. Jest to bardziej zaawansowana funkcjonalność CVS a, wymaga wprawy przy korzystaniu z repozytorium.
Plik konfiguracyjny.cvsrc Pliku zawiera najczęściej wykorzystywane opcje, które będą uwzględniane przez cvs i nie będzie potrzeby ich podawać jawnie np. update -d -P diff -u
Keywords Keywords słowa kluczowe. Są to pewne słowa zawarte pomiędzy znakami dolara $Keyword$, umieszczone w pliku, które są interpretowane przez CVS i zamieniane na konkretne informacje. CVS interpretuje te słowa przy każdej zmianie rewizji. Przykładowe słowo kluczowe to: $Id$ które jest rozwijane przez cvs do, przykładowo, takiej postaci: $Id: keywords.txt,v 1.5 2006/03/22 14:58:23 cvstestuser Exp $
Mechanizm watch i edit Mechanizm watch polega na nałożeniu pewnej kontroli na wybrane pliki. Użytkownik włączający obserwację może dostawać informacje na temat próby edycji plików wybranych plików. Obserwowane pliki ustawiane są w trybie tylko do odczytu i w celu ich edycji trzeba wydać polecenie edit, które informuje innych użytkowników, że ktoś zamierza edytować plik.
Pliki binarne Pliki binarne są inaczej przechowywane w repozytorium oraz inaczej traktowane przez cvs. W przeciwieństwie do plików tekstowych, przechowywane są w całości. Dodawanie plików binarnych do repozytorium: cvs add -kb plik_binarny
Praca z repozytorium na KNIPie Konfiguracja repozytorium: /var/cvsroot metoda: local ext (ssh) Prawa dostępu Dostęp do repozytorium jest limitowany, aby uzyskać dostęp do zapisu należy skontaktować się z cvsadminem cvsadmin@knip.pol.lublin.pl Moduł testowy test dostępny dla wszystkich
Dodatkowe informacje Dokumentacja i artykuły w internecie http://bsd.amu.edu.pl/wyklady/cvs.html http://www.leon.w wa.pl/texts/cvshelp.php http://cvsbook.red bean.com/cvsbook.html (jęz. angielski) http://ximbiot.com/cvs/manual/ oryginalna dokumentacja
Dziękuję z uwagę