Narzędzia osobiste
Jesteś w: Start Pomoc Baza wiedzy CVS i WINCVS

SAMOUCZEK CVS i WINCVS

Uwaga !!! Opis pierwotnie był pisany w latach 2003-2005 i obecnie powszechnie uważa się produkt CVS i WinCVS za nie zalecany do nowych projektów.

Wprowadzenie

 

O CVS


CVS jest programem do kontroli i zarządzania wersjami kodu źródłowego, rozpowszechnianym na zasadzie Open Source. Szczegóły można znaleźć na http://www.cvshome.org Dzięki swej otwartości CVS stał się standardem wśród szerokiej rzeszy programistów. Bardzo dobry opis podstaw CVS znajduje się na stronie http://bsd.amu.edu.pl/wyklady/cvs.html


Sam CVS jest programem działającym w trybie tekstowym, co czyni go mało przyjaznym w użyciu dla początkujących. W celu ułatwienia pracy powstało wiele narzędzi graficznych będących nakładkami dla trybu tekstowego. Przedstawione w tym dokumencie narzędzia to WinCVS działający w MS Windows, GnuCVS (gcvs) w Linux (równiez BigBoss) i Cervisia działająca na Linux KDE.


WinCVS można pobrać z http://www.wincvs.org/.


Należy zwrócić uwagę, że w WinCVS większości przycisków odpowiada stosowne wywołanie z linii poleceń klasycznego CVS. W każdym momencie pracy z WinCVS użytkownik może skorzystać z linii poleceń.


W pracy z CVS rozróżniamy dwa drzewa katalogów:

  • składnicę (ang. repository)
  • piaskownicę (ang. sandbox)
Składnica zawiera pliki wraz z historią ich rozwoju, najczęściej przechowywana jest na odległym serwerze.


Piaskownica jest lokalną kopią plików na której pracujemy, tj. rozwijamy, kompilujemy itp. Dopiero kiedy stwierdzimy, że wprowadzone zmiany nas satysfakcjonują to zatwierdzamy wprowadzone zmiany do Składnicy.

 

Przygotowanie do pracy

 

Uruchomienie WinCVS


Po uruchomienie programu WinCVS powinno ukazać się okno jak na rys 2.1. W głównym oknie możemy wyróżnić kilka podokien:

  1. struktura drzewa katalogów w pobranym ze składnicy modułu,
  2. ścieżka dostępu do piaskownicy na lokalnym dysku,
  3. uszczegółowiona struktura katalogów i plików,
  4. podokno informacji i logów związanych z linią komend CVS.


W podoknie logów po uruchomieniu programu powinna pojawić się informacja o dostępnej wersji interpretera PYTHON. Zdarza sie, ze WinCVS nie wykrywa automatycznie lokalizacji interpretera. Należy wtedy ręcznie podać ścieżkę dostępu do dynamicznie ładowanej biblioteki, np. c:\winnt\system32\python24.dll. WinCVS -> Preference -> WinCvs -> Python DLL: Brak interpretera znacznie ogranicza pracę i funkcjonalność nakładki graficznej na CVS.

Główne okno programu WinCVS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Przed pobraniem zawartości repozytorium należy odpowiednio skonfigurować program. W tym celu należy ustawić ścieżkę dostępu do lokalnej kopii plików - piaskownica, rys. 2.1, poz.2. Przykładowo na rysunku podano c:\piaskownica. Na komputerach w laboratorium dysk C jest niedostępny dla studentów. Należy wybrać dysk F.

3. Pobranie plików ze składnicy

Logowanie


Pierwszą czynnością w procesie pobrania zawartości repozytorium jest logowanie: WinCVS -> Admin -> Login ...


Wartość pola CVSROOT można wpisać samemu w oknie "Login settings" albo skorzystać z pomocy okna ustawień (rys 3.2) wywoływanego przez kliknięcie przycisku 1 (patrz rys. 3.1)

Ustawienia logowania

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Preferowany jest bezpieczny i kodowany dostęp do serwera z wykorzystaniem protokołu SSH. Jako nazwę użytkownika należy podać nazwę podaną na zajęciach.

WinCvsCvsroot

 

 W celu pobrania nowego modułu wybieramy: WinCVS -> Remote -> Checkout

Powinno pojawić się okno 3.3. Wybieramy odpowiedni CVSROOT, sprawdzamy poprawność "Local folder to check to" wpisujemy nazwę żądanego modułu. Jeżeli nie pamiętamy dokładnej nazwy modułu to możemy wybrać przycisk "..." aby wyświetlić listę dostępnych modułów.

WinCvsCheckoutSettings

Wybranie modułu

Sprawdzamy poprawność CVSROOT. Ewentualnie odświeżamy zawartość przez przycisk "Refresh". Wybieramy moduł używany na laboratorium, np. aiskss_lab_XXXX, gdzie XXXX jest rokiem prowadzonych zajęć.

 

WinCvsCheckoutSelectModule

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Wylogowanie

W przypadku pracy na komputerach uczelnianych ważne jest by po skończonej pracy wylogować się. Po wylogowaniu wymazywane jest hasło przechowywane na lokalnym komputerze.

4. Dodanie plików i katalogów

Po ściągnięciu modułu przy pomocy standardowych narzędzi systemowych (np. Explorer) tworzymy strukturę katalogów i plików w lokalnym komputerze. Umieszczenie nowych plików i katalogów w strukturze drzewa katalogów modułu nie jest jednoznaczne z kontrolą przez CVS. Aby katalog był pod kontrolą należy go wybrać (rys. 2.1 poz.1 i 3) i dodać przez: WinCVS -> Modify -> Add

Pliki tekstowe dodajemy tak samo jak katalogi. Pliki binarne przez: WinCVS -> Modify -> Add binary

Pliki tekstowe w standardzie UNICODE dodajemy przez: WinCVS -> Modify -> Add unicode

Nowy plik

 

 

 

 

 

 

 

 

 

Po dodaniu pliku tekstowego

 

 

 

 

 

 


Samo dodanie plików do CVS nie jest jednoznaczne z wysłaniem ich na serwer. Jest to tylko informacja dla menadżera wersji o istnieniu pliku. Nowo dodany plik do CVS musimy zatwierdzić poleceniem "Commit": WinCVS -> Modify -> Commit

Pojawia się okienko "Commit settings", w którym należy wpisać stosowny do wprowadzonych zmian komentarz.

Zatwierdzenie nowego pliku

 

 

 

 

 

 

 

 

 

 

 

 

 

Katalogi nie są zatwierdzane tylko dodawane. Poprawnie zatwierdzenie pliku przedstawia rysunek poniżej. Nowo dodany plik dostał swoją wersje - kolumna "Rev.".

Zatwierdzony plik po dodaniu

 

 

 

 

 

 

 

 

5. Uaktualnienie zawartości piaskownicy

W czasie gdy pracujemy na swojej lokalnej kopii plików inna osoba może zmodyfikować zawartość składnicy. Aby uaktualnić zawartość piaskownicy do najświeższej wersji należy wybrać: WinCVS -> Modify -> Update

 

6. Etykiety

Etykiety (ang. tag) są to nazwy nadawane strukturze katalogów i plików w danej wersji. Przykładowo skończyliśmy pewien etap rozwoju naszej aplikacji i chcemy ja przekazać do działu testowego. Pliki naszego modułu mają różne wersje. W celu późniejszej identyfikacji wersji poszczególnych plików przekazanych do testów warto nadać im wspólną nazwę właśnie przez utworzenie taga.

Utworzenie taga w module w składnicy

W celu utworzenia taga na module w składnicy postępujemy: WinCVS -> Remote -> Create a tag by module ...

Pojawia się okienko jak poniżej, wpisujemy nazwe nowego taga i wybieramy interesujący nas moduł

WinCvsCreateTagSettingsModule

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Utworzenie taga w piaskownicy

Chcąc utworzyć taga na lokalnej kopii plików w piaskownicy postępujemy: WinCVS -> Modyfi -> Create a tag ...

Utworzenie taga w piaskownicy

 

 

 

 

 

 

 

 

 

 

 

 

 


Tag tworzony na module dotyczy zawsze najświeższych plików przechowywanych w repozytorium dla danego modułu. Tag tworzony na lokalnej piaskownicy może dotyczyć indywidualnie dobranych wersji plików przez użytkownika.

Pobranie taga ze składnicy

Aby uaktualnić zawartość piaskownicy do wybranego taga należy wybrać: WinCVS -> Modify -> Update ... -> Update options

Zaznaczyć "By revision/tag/branch" i wpisać nazwę taga lub nacisnąć na przycisk "...". Patrz rysunek 6.3.

Wygląd składnicy po uaktualnieniu jej zawartości do żądanego taga przedstawiono na rys. 7.4. W kolumnie "Tag" znajduje się nazwa pobranego taga dla każdego pliku.


W celu powrotu do najświeższej zawartości CVS (oznaczonej również etykietą HEAD) należy zaznaczyć: WinCVS -> Modyfi -> Update ... -> Update options -> Reset any sticky tags/date/kopts

Graficzna ilustracja drzewa wersji

Dla każdego pliku można wyrysować graf reprezentujący rozwój drzewa wersji. W tym celu należy wybrać: WinCVS -> Query -> Graph ...

Przykładowa reprezentacja grafu dla pliku test.txt przedstawiona jest na rysunku poniżej.

 

7. Rozgałęzienia

Rozgałęzienia (ang. branch) są bardzo pomocne w trakcie rozwijania oprogramowania i innych dokumentów. Przykładowo znajdują zastosowanie w przypadku, gdy trzeba dokonać drobnych zmian w już dostarczonym klientowi wersji oprogramowania. A obecny etap rozwoju głównego nurtu (HEAD) nie jest jeszcze wystarczająco stabilny by można go było zastosować w systemie produkcyjnym.

Innym zastosowaniem rozgałęzienia jest chęć wprowadzenia nowego modułu (pomysłu) do aplikacji. Jednakże wprowadzenie nowego modułu do głównej wersji może spowodować destabilizację całej aplikacji, więc można go wprowadzić jako gałąź (tj. wersję alternatywną)

Podobnie jak etykietę, rozgałęzienie możemy utworzyć na dwa sposoby.

Rozgałęzienie w module

W celu stworzenia rozgalezienia na module postepujemy: WinCVS -> Remote -> Create a branch ...

WinCvsCreateTagSettingsModule

Rozgałęzienie w lokalnej wersji składnicy

W celu stworzenia rozgałęzienia w lokalnej wersji składnicy postępujemy następująco: WinCVS -> Modify -> Create a branch ...


Pobranie rozgałęzienia

Rozgałęzienie pobieramy podobnie jak etykietę: WinCVS -> Modify -> Update ... -> Update options -> By revision/tag/branch:

Należy wpisać nazwę żądanego rozgałęzienia.

Po pobraniu żądanego rozgałęzienia jego nazwa powinna być widoczna obok nazwy pliku (patrz rys. 7.3).

Wprowadzenie i zatwierdzenie zmian w rozgałęzieniu

Przy wprowadzeniu zmian w rozgałęzieniu i zatwierdzaniu ich postępujemy tak samo jak przy pracy z bieżącą wersją.

Po zatwierdzeniu zmian w rozgałęzieniu do numeru wersji pliku np. 1.5 dopisywane są kolejne podnumery np. 1.5.2.1, patrz rys. 7.3.


Łączenie rozgałęzień i etykiet

Często zachodzi potrzeba połączenia dwóch gałęzi. Przykładowo, gdy rozwijana w rozgałęzieniu biblioteka okazała się dobrym pomysłem i pragniemy ją zintegrować z główna gałęzią.

  1. Uaktualniamy zawartość piaskownicy do głównego rozgałęzienia
  2. Wybieramy: WinCVS -> Modify -> Update ... -> Merge options Następnie interesujące nas rozgałęzienie.

Najlepszym rozwiązaniem dla łączenia gałęzi jest utworzyć tagi, między którymi będziemy wykonywać łączenie. Przy kolejnym łączeniu gałęzi należy dodać nowy tag i wykonać łączenie do poprzedniego taga. Sugeruje się by w nazwach taga dodać datę co ułatwi ich późniejszą identyfikację.

cvs_merge_tags.PNG

Szerzej zagadnienie łączenia rozgałęzień i wynikłych problemów jest opisane w A bit more CVS: an introduction to the use of branches.

 


Anulowanie wprowadzonych zmian

Zaznacz plik i wybierz:

WinCVS -> Modify -> Update -> Update settings -> Get the clean copy.

8. Zapytania

Wyświetlenie różnicy dwóch wersji

Chcąc wyświetlić różnicę dwóch wersji postępujemy następująco:.

WinCVS -> Query -> Diff

Możemy wybrać 3 opcje porównań:

   * lokalna kopia w stosunku do tej samej wersji składnicy (ang. Local copy against the same remote revision),
   * lokalna kopia w stosunku do wybranej wersji w składnicy (ang. Local copy against another revision/tag/branch or date),
   * porównanie dwóch wersji przechowywanych w piaskownicy (ang. Two revision/tags/branches or dates against each other).

 

 

 

Wyświetlenie różnicy w oknie WinCVS przedstawia rysunek 8.3.

WinCvsDiffView

 

Domyślny program porównujący, tzw. "diff", można podmienić na inny w:

WinCVS -> Admin -> Preferences -> WinCVS

Graficzna wersja (WinDiff) prezentuje różnice w bardziej przyjazny sposób:

 

Log

Wyświetlenie listy zmian w poszczególnych wersjach zaznaczonego pliku dokonujemy przez: WinCVS -> Query -> Log...

Code listing 8.1

           cvs log cvs-tutorial.xml (in directory C:\piaskownica\bigboss\Doc\www\proj\pl\devrel\handbook\)
           
           ***** CVS exited normally with code 0 *****
           
           Rcs file : '/home/cvsroot/pl/edu/czarny element/ia/BigBoss/Doc/www/proj/pl/devrel/handbook/cvs-tutorial.xml,v'
           Working file : 'cvs-tutorial.xml'
           Head revision : 1.8
           Branch revision : 
           Locks : strict
           Access :
           Keyword substitution : 'kv'
           Total revisions : 8
           Selected revisions : 8
           Description :
           
           
           ----------------------------
           Revision : 1.8
           Date : 2005/2/21 12:50:25
           Author : 'mkl'
           State : 'Exp'
           Lines : +12 -13
           Description :
           Literówki i inne takie...
           ===============================================

9. Status

 

Podsumowanie wielu informacji na temat zaznaczonego pliku można uzyskać przez: WinCVS -> Query -> Status...

Poniżej przedstawiono przykładowy fragment statusu.

Code listing 9.1

           cvs status -v test.txt (in directory C:\piaskownica_test\aiskss_lab_2005\)
           ===================================================================
           File: test.txt         	Status: Up-to-date
           
              Working revision:	1.6
              Repository revision:	1.6	/home/cvsroot/pl/edu/czarny element/ia/AiSKSS/lab_2005/test.txt,v
              Sticky Tag:		(none)
              Sticky Date:		(none)
              Sticky Options:	(none)
           
              Existing Tags:
           	relase_2102205           	(revision: 1.6)
           	branch-josef-sp-zoo-20050213	(branch: 1.5.2)
           	release_20050213         	(revision: 1.4)
           
           
           ***** CVS exited normally with code 0 *****

Pobranie nieistniejących w piaskownicy katalogów

Przykładowo katalog temp jest nowy w strukturze dlatego w CVS przy update trzeba zaznaczyć opcję odnoszącą się to utworzenia brakujących katalogów. Pierwszy raz jak pobieramy moduł do piaskownicy to używamy komendy "checkout", która domyślnie tworzy wszystkie podkatalogi dla danego modułu.

wincvs_create_missing_directory.PNG

 

10. Dodatki

Zmiana CVSROOT na piaskownicy

Na laboratorium często zachodzi potrzeba zmiany właściciela ściągniętej piaskownicy. Aby tego dokonać musimy najpierw zaznaczyć nazwę modułu, Rys. 2.1/1. następnie postępujemy: WinCVS -> Macros -> CVS -> Change CVSROOT

Pojawia się okno z wartością CVSROOT poprzedniego właściciela piaskownicy. Naciskamy OK. W drugim oknie należny wpisać poprawna wartość CVSROOT dla nowego właściciela. Najczęściej jest to zmiana parametru username. Ponownie naciskamy OK.

11. Uwagi o systemach operacyjnych

  1. Ściągając z repozytorium pliki klientem WinCVS na platforme Unix (np. QNX) z udostępnioną piaskownicą po SAMBA należy włączyć opcje zmiany znaku końca wiersz w Remote->Checkout module->Globals->Checkout text files with the Unix LF(0xA)

12. O tym dokumencie

Powstanie

Dokument powstał na potrzeby wewnętrzne potrzeby.

Licencja

Dokument może być dowolnie dystrybuowany z podaniem jego autorów.

13. Literatura

  1. N. Matthew, R. Stones "Zaawansowane programowanie w systemie Linux"
  2. CVS Home
  3. WinCVS