2004.03_CVS – system zarządzania wersjami_[Programowanie].pdf

(708 KB) Pobierz
439033848 UNPDF
dla programistów
Zobacz w:
CVS – system zarządzania
wersjami
wijane przez wielu różnych programistów.
Każdy z nich może pracować nad innym
fragmentem kodu. Utrzymanie porządku
staje się w takim przypadku bardzo trudne. W celu ułatwie-
nia pracy programistom powstał CVS ( Concurrent Versions
System ), czyli system zarządzania wersjami. Przydaje się on
jednak nie tylko przy tworzeniu oprogramowania – świet-
nie nadaje się również do rozwijania serwisów WWW czy
dokumentacji. Można go zastosować właściwie wszędzie,
gdzie tylko występują cyfrowe dane.
Jak to działa?
Wykorzystując CVS mamy możliwość zapoznania się
z historią zmian w projekcie. Oprócz tego, możemy
w każdej chwili uzyskać informacje o różnicach pomiędzy
poszczególnymi wersjami plików. Co więcej, w dowolnej
chwili możemy odtworzyć projekt w takiej postaci, w jakiej
znajdował się jakiś czas temu. Możemy nawet rozwijać pro-
jekt równocześnie w kilku kierunkach (tzw. rozgałęzieniach
– ang. branches ), co pozwala nam na eksperymentowanie
bez naruszania głównej wersji projektu. Jeśli dodać do tego
możliwość równoczesnego dostępu wielu programistów,
system CVS okazuje się być bardzo przydatny.
Najważniejszym pojęciem dotyczącym CVS jest repo-
zytorium (ang. repository ), czyli obszar na dysku kom-
putera (lokalnego lub zdalnego), w którym przechowy-
wane są wszystkie informacje na temat poszczególnych
projektów. Każdemu projektowi możemy przyporządko-
wać osobny moduł, czyli po prostu podkatalog w repo-
zytorium.
Wiemy już, że mamy jedno repozytorium z projek-
tem, oraz wiele osób, które mogą z nim pracować. Powsta-
je pytanie, jak to działa. Otóż każdy z programistów (przyj-
mijmy, że nasz projekt jest programem) może pobrać (ang.
checkout ) z repozytorium aktualną wersję projektu. Posia-
da wtedy u siebie kopię roboczą, z którą może pracować.
Rysunek 1. Wielu webmasterów wykorzystuje CVS w pracach
nad swoimi witrynami
W dalszych etapach pracy nie będzie musiał już pobierać
całości projektu, a jedynie będzie uaktualniał (ang. update )
swoją wersję. Jeśli programista dokonał zmian w swojej
kopii roboczej, może je przesłać (ang. commit ) do repozy-
torium. Może zdarzyć się, że wcześniej jakiś inny progra-
mista wysłał już swoje poprawki. O ile nie kolidują one ze
sobą, to nie będzie problemu. Jeśli jednak zmieniany był
ten sam fragment kodu, to podczas przesyłania będziemy
mieli możliwość zdecydowania, które poprawki i w jakiej
kolejności powinny być wprowadzone.
Warto wiedzieć, że CVS może działać nie tylko w trybie
sieciowym, ale również i lokalnym. Jeśli więc sami opraco-
wujemy jakiś projekt, to z powodzeniem możemy wykorzy-
stać CVS tworząc repozytorium na dysku własnego kom-
putera.
Przykład użycia
Obudziłem się z potwornym bólem głowy. Jeden rzut
okiem na budzik uświadomił mi, że jest już po południu.
Szybko wstałem i usiadłem przy komputerze – na jutro
muszę mieć skończony program na zaliczenie, a tu jesz-
cze tyle do napisania. Z zadowoleniem stwierdziłem, że
przed zaśnięciem wysłałem wszystkie moje zmiany do
zdalnego repozytorium CVS . Sprawdziłem historię zmian
w plikach i ucieszyłem się jeszcze bardziej – koledzy z
grupy dopisali już kilkaset istotnych linii kodu. Ściągną-
łem na dysk nowsze wersje plików i zabrałem się dalej
do pracy.
O autorze:
Autor zakończył studia zaoczne na V roku Informatyki na
Politechnice Opolskiej. Z Linuksem (i ogólnie systemami
uniksowymi) ma styczność od wielu lat. Obecnie admi-
nistruje siecią blokową złożoną z dziesięciu komputerów.
Kontakt z autorem: autorzy@linux.com.pl .
58
marzec 2004
Piotr Machej
O programowanie Open Source jest często roz-
439033848.007.png 439033848.008.png
cvs
Na drugiej konsoli włączyłem pobieranie z CVS uaktual-
nienia mojego ulubionego MPlayera , a gdy już wylądowało
na moim dysku, uruchomiłem kompilację.
Tymczasem przyszedł mi do głowy nowy pomysł doty-
czący programu na zaliczenie. Stworzyłem osobną gałąź
projektu, aby nie przeszkadzać kolegom, po czym zacząłem
eksperymenty z kodem. Nawet nie zauważyłem, jak nad-
szedł wieczór. Pomysł okazał się dobry, więc za zgodą reszty
grupy włączyliśmy moje eksperymentalne zmiany do głów-
nego projektu, który w tym czasie znów się rozwinął. Jesz-
cze tylko ostatnie szlify i jutro będziemy mieli piątki z zali-
czenia. Nie da się ukryć, że CVS ułatwia pracę grupową.
Instalacja
Pakiet cvs znajduje się praktycznie w każdej z popularnych
dystrybucji i w większości przypadków będzie umieszczo-
ny na dysku podczas standardowej instalacji. W przypad-
ku Auroksa 9.2 pakiet cvs-1.11.2-10.i386.rpm znajduje się
na drugiej płycie CD z dystrybucją. Jeśli przypadkiem CVS
nie jest zainstalowany, możemy doinstalować go samodziel-
nie poleceniem rpm -Uvh cvs-1.11.2-10.i386.rpm wydanym
w katalogu /RedHat/RPMS/ na drugiej płycie CD. W innych
dystrybucjach należy wykorzystać narzędzia właściwe dla
konkretnej dystrybucji.
Niektórych Czytelników może nie zadowolić aktu-
alność pakietów dostarczanych z dystrybucją. W chwili
pisania niniejszego artykułu dostępna już była stabilna
wersja 1.11.11 . Jeśli chcemy zainstalować najaktualniejszą
wersję, warto wejść na domową witrynę projektu ( http://
www.cvshome.org/ ) i z sekcji CVS Downloads pobrać
najnowszy plik. Po pobraniu możemy rozpakować go
poleceniem tar xjvf cvs-1.11.11.tar.bz2 (nazwa pliku
dotyczy wersji aktualnej w chwili pisania artykułu).
Przechodzimy do utworzonego podkatalogu polece-
niem cd cvs-1.11.11 , po czym zapoznajemy się z doku-
mentacją (przede wszystkim z plikami INSTALL oraz
README ). Kompilacja i instalacja nie powinna sprawić
problemu – na ogół wystarczy standardowy ciąg pole-
ceń: ./configure , make i make install (to ostatnie wydane
z uprawnieniami użytkownika root ).
Rysunek 2. Instrukcja pobierania programu MPlayer z CVS jest
umieszczona na witrynie domowej projektu
/cvsroot/mplayer login
Dzięki temu powinniśmy zalogować się anonimowo do
zdalnego repozytorium CVS . Po pytaniu o hasło należy po
prostu wcisnąć klawisz [ Enter ]. Następnie wydajemy właści-
we polecenie pobierające aktualne pliki źródłowe:
cvs -z3 -d:pserver:anonymous@mplayerhq.hu: S
/cvsroot/mplayer co -P main
Dzięki temu w podkatalogu main/ bieżącego katalogu
zostanie umieszczona najbardziej aktualna wersja źródeł
programu. Dokładne znaczenie poszczególnych opcji zosta-
nie omówione w dalszej części artykułu.
Wykorzystujemy GCvs
Jeśli wolimy korzystać z interfejsu graficznego, to musimy
wykonać nieco inne kroki. W przypadku programu GCvs
(opisanego dokładniej w rozdziale Interfejsy graficzne )
zaczynamy od wybrania opcji Admin –> Preferences .
W otwartym okienku w zakładce General wpisujemy
w pole CVSROOT linię:
Pobieramy dane ze zdalnego serwera
CVS
Większość użytkowników Linuksa najczęściej wykorzystu-
je CVS do pobierania najnowszych wersji oprogramowania.
Jeśli tylko twórcy konkretnego programu przewidzieli moż-
liwość pobrania plików z repozytorium CVS , to opis powi-
nien znajdować się na stronie domowej projektu.
Przykładem niech będzie popularny program MPlayer .
Po wejściu na jego witrynę ( http://www.mplayerhq.hu/
homepage/ ) możemy przejść do sekcji Downloads . Tam, na
samym dole strony (Rysunek 2), znajdziemy sekcję oznaczo-
ną napisem CVS . Postępując zgodnie z umieszczonymi tam
informacjami, powinniśmy wydać w konsoli polecenie:
anonymous@mplayerhq.hu:/cvsroot/mplayer
Następnie w sekcji Authentication zaznaczamy pole Pas-
sword ("pserver") . Wartości te odpowiadają opcji -d:pse-
rver:anonymous@mplayerhq.hu:/cvsroot/mplayer z poleceń
wpisywanych w konsoli i wskazują na lokalizację repozyto-
rium, z którego będziemy pobierać pliki. W zakładce Glo-
bals warto zaznaczyć opcję Use TCP/IP compression – jeśli
ustawimy ją na wartość 3 , to będzie dokładnie odpowiadać
opcji -z3 z podanego wcześniej polecenia. Sprawia ona, że
dane podczas przesyłania są kompresowane algorytmem
gzip (dzięki temu powinny szybciej znaleźć się na naszym
dysku). Ostatnia z użytych opcji ( -P ) jest domyślnie usta-
wiona w zakładce Globals Prune (remove) empty directo-
ries . Sprawia ona, że po pobraniu plików z repozytorium,
cvs -d:pserver:anonymous@mplayerhq.hu: S
www.linux.com.pl
59
439033848.009.png 439033848.010.png
dla programistów
kasowane są pobrane puste katalogi (oczywiście tylko na
naszym dysku – w repozytorium pozostają bez zmian).
Zmienione opcje zatwierdzamy przyciskiem OK .
Teraz możemy zalogować sie do repozytorium. Służy do
tego opcja Admin –> Login . Również w tym przypadku na
pytanie o hasło po prostu wciskamy przycisk OK . Po chwili
w oknie komunikatów, poniżej linii cvs -z3 login , powi-
nien pojawić się napis *****CVS exited normally with code
0***** . Skoro zalogowaliśmy się bez problemu, możemy
pobrać pliki źródłowe MPlayera . W tym celu wybieramy
opcję Create –> Checkout module . W otwartym okienku
przechodzimy do katalogu, w którym chcemy zapisać pliki
i wciskamy OK . Pozostaje nam w kolejnym okienku wpisać
nazwę modułu do pobrania (w polu Enter the module
name... ). W naszym przypadku jest to main . Wciskamy
jeszcze raz przycisk OK i czekamy, aż pliki znajdą się na
naszym dysku.
Jak widać, do zwykłego pobrania plików wygodniej jest
po prostu wpisać dwa polecenia w konsoli, zamiast klikać
i klikać... Na dłuższą metę interfejs graficzny okazuje się
jednak całkiem przydatny.
Rysunek 3. Po pobraniu projektu do katalogu robocze-
go mamy dostęp do informacji o wersjach poszczególnych
plików
można pobrać plik gcvs-1.0-1.i386.rpm (i zainstalować
poleceniem rpm -Uvh gcvs-1.0-1.i386.rpm ) lub wybrać
pakiet źródłowy gcvs-1.0-1.src.rpm (instalujemy go pole-
ceniami: rpmbuild --rebuild gcvs-1.0-1.src.rpm , rpm -Uvh
/usr/src/redhat/RPMS/i386/gcvs-1.0-1.i386.rpm ).
Po instalacji możemy go uruchomić poleceniem gcvs .
Okno programu podzielone jest na trzy duże okna. Po
lewej stronie mamy listę katalogów. Możemy w niej wybrać
katalog, w którym akurat chcemy pracować. W górnym
oknie znajduje się spis plików wraz z informacjami na
temat ich aktualności. Wreszcie w trzecim, dolnym oknie,
pojawiają się komunikaty drukowane przez CVS .
Program jest przyjemny i wygodny w użyciu, a dzięki
wypisywaniu w oknie komunikatów postaci polecenia,
świetnie nadaje się do nauki CVS dla początkujących.
W niniejszym artykule postaram się wskazać, jak można
w GCvs wykonać wszystkie opisywane czynności.
Wykorzystujemy CVS lokalnie
Jak już wspomnieliśmy, CVS pozwala na pracę w trybie
lokalnym. Dzięki temu możemy stworzyć repozytorium na
dysku naszego komputera i korzystać z niego bez potrzeby
łączenia się z siecią komputerową.
Tworzymy repozytorium
Tworzenie repozytorium zaczynamy od stworzenia katalo-
gu, w którym umieszczane będą wszystkie pliki. Może on
znajdować się w dowolnym, wybranym przez nas miejscu.
Należy jednak pamiętać, abyśmy mieli do niego prawa
odczytu i zapisu. No i oczywiście powinniśmy dysponować
odpowiednią ilością wolnego miejsca na dysku. Przykłado-
wo, niech będzie to katalog ~/repozytorium/ – w naszym
katalogu domowym na pewno możemy zapisywać pliki
i nie potrzebujemy do tego uprawnień użytkownika root :
Interfejsy graiczne
Minęły już chyba bezpowrotnie czasy, gdy słowa Unix
i Linux kojarzyły się z czarnym ekranem wypełnionym
białymi literkami. W dobie rozbudowanych środowisk
graficznych coraz trudniej o program, który nie posiadał-
by interfejsu graficznego. CVS nie jest wyjątkiem. Posiada
graficzne nakładki działające nie tylko w systemach unikso-
wych, ale również w Windows czy MacOS .
Adresy witryn niektórych interfejsów graficznych
umieszczone są na końcu artykułu, w ramce W Sieci .
Oprócz samych interfejsów graficznych (również tych
dostępnych z poziomu WWW ), znajdują się tam też odno-
śniki do takich projektów, jak CVSMonitor (pozwala śledzić
aktywność w projekcie, wprowadzane zmiany itp.) czy
CVSspam (program powiadamiający e-mailem o zmianach
wprowadzonych w repozytorium). Poniżej pozwolę sobie
krótko opisać jeden wybrany interfejs graficzny.
mkdir ~/repozytorium
Teraz musimy zainicjować nasze repozytorium. Służy do
tego następujące polecenie:
cvs -d ~/repozytorium init
GCvs
GCvs jest bardzo rozbudowanym i wygodnym klientem
CVS . Jest to odmiana programu WinCvs, przeznaczone-
go dla systemu Windows . Istnieje również odmiana tego
programu dla platformy Mac OS X MacCvsX . Niezależnie
więc, z której platformy będziemy korzystać, mamy moż-
liwość używania programów o praktycznie identycznych
interfejsach.
Program GCvs możemy pobrać z witryny domowej
projektu ( http://cvsgui.sourceforge.net/ ), z sekcji Download .
Dostępne są zarówno źródła, jak i pakiety RPM oraz DEB .
Zależnie od posiadanej przez nas dystrybucji, pobieramy
odpowiedni plik i instalujemy. W przypadku Auroksa
Powyższe czynności wykonujemy tylko raz. Od tego
momentu możemy już korzystać z utworzonego katalogu.
Warto zwrócić uwagę na opcję -d katalog . Wskazuje
ona lokalizację repozytorium, do którego odwołujemy
się poleceniem cvs . Każdorazowe jej wpisywanie może
być uciążliwe, dlatego lepiej umieścić nazwę właściwego
katalogu w zmiennej środowiskowej CVSROOT . W naszym
przykładzie dokonamy tego poleceniami:
CVSROOT=~/repozytorium
export CVSROOT
Możemy te linie dopisać do któregoś z plików wykonywa-
nych w momencie logowania, dzięki czemu nawet po prze-
60
marzec 2004
439033848.001.png
cvs
logowaniu się zmienna środowiskowa CVSROOT będzie
ustawiona. W Auroksie takim plikiem jest ~/.bash_profile .
Od tej chwili możemy pomijać opcję -d katalog i stoso-
wać skróconą wersję poleceń (np. cvs init ).
W przypadku programu GCvs pole CVSROOT ustawia-
my na ~/repozytorium , natomiast opcję Authentication na
wartość Local .
Jeśli chcemy, aby z repozytorium w trybie lokalnym
mogli korzystać inni użytkownicy, warto przygotować je
tak, jak opisano w rozdziale Tworzymy własny serwer CVS .
Szczególnie należy zwrócić uwagę na rozdział Nieupoważ-
nionym wstęp wzbroniony .
Ciekawe opcje wywołania CVS:
• -d katalog_główny_CVS – pozwala pracować na innym
repozytorium niż zdeiniowane w zmiennej środowiskowej
CVSROOT;
• -e edytor – wskazuje nazwę edytora, który będzie wyko-
rzystywany do wpisywania informacji do rejestru zmian
(przydaje się, jeśli nie chcemy korzystać z domyślnego);
• -n – nie wykonuje żadnych operacji zmieniających repo-
zytorium lub kopię roboczą, a jedynie wypisuje komuni-
katy;
• -z liczba – ustawia kompresję na poziom określony war-
tością liczba.
Umieszczamy projekt w repozytorium
Jeśli rozpoczęliśmy już pracę z naszym projektem, możemy
go teraz umieścić w repozytorium. Załóżmy, że pliki pro-
jektu znajdują się w katalogu ~/projekt/ . Przechodzimy do
niego poleceniem cd ~/projekt , po czym wydajemy pole-
cenie:
W naszym poleceniu użyliśmy opcji -m , która pozwala
dodać własną informację do rejestru zmian w projek-
cie. W opcji nazwa_modułu podajemy krótką nazwę,
którą będzie nosił podkatalog utworzony w katalogu
~/repozytorium/ , zawierający pliki z naszym projektem.
W polu vendor możemy wpisać dowolne słowo nie zawie-
rające spacji i znaków specjalnych – np. może to być nasz
przydomek ( nick ). Ostatnia opcja, release , pozwala na
użycie symbolicznego określenia numeru wersji. Nazwa
start odpowiada numerowi 1.1.1.1 .
W GCvs wybieramy opcję Create –> Import module .
Następnie w otwartym oknie przechodzimy do katalogu,
w którym znajdują się pliki projektu (w naszym przypadku
~/projekt ) i wciskamy OK . Jeśli pojawi się okienko z komu-
nikatem błędu, to należy je dokładnie przeczytać i odpo-
wiednio zareagować. Może okazać się przykładowo, że
GCvs źle odgadnie typ pliku i uzna plik tekstowy za binar-
ny ( BINARY ). W takim przypadku należy wskazać odpo-
wiednią pozycję i wcisnąć Edit . Z listy możemy wybrać
jedną z opcji: Leave unchanged (nic nie zmieniaj), Force
binary (potraktuj plik jako binarny), Force text (potraktuj
plik jako tekstowy) oraz Ignore (zignoruj).
Warto dbać, aby pliki miały przypisany właściwy typ.
Jeśli plik binarny zapiszemy jako tekstowy, to zostanie on
doszczętnie zniszczony – CVS przechowuje pliki tekstowe
wraz z historią zmian zapisaną w nich samych. Z tego
samego powodu nie ma sensu czystych plików tekstowych
przechowywać jako binarnych – wysłanie każdej popraw-
ki do repozytorium wiązałoby się z jego powiększeniem
o kolejny plik.
W kolejnym oknie możemy ustalić jeszcze nazwę
modułu, wpisać komunikat (odpowiednik opcji -m ) oraz
ustawić wartości pól Vendor i Release .
Jeśli przesłanie plików do repozytorium zakończyło się
bez błędów, możemy skasować nasz katalog ~/projekt/ wraz
z zawartością. Za chwilę odzyskamy go z repozytorium, już
razem z informacjami o wersjach poszczególnych plików.
cvs import -m "Pierwszy import projektu" S
projekt gerard start
Oczywiście polecenie to możemy dostosować do naszych
potrzeb – ma ono postać:
cvs import [-opcje] nazwa_modułu vendor release
Podstawowe polecenia CVS:
checkout moduł (skrót: co ) – tworzy podkatalog z kopią
roboczą plików umieszczonych w repozytorium
update (skrót: up ) – uaktualnia pliki kopii roboczej do naj-
nowszej wersji obecnej w repozytorium
add plik – komunikuje CVS, że plik zostaje dołączo-
ny do projektu i ma zostać przesłany przy następnym
wywołaniu commit;
• remove plik – po usunięciu pliku z kopii roboczej możemy
użyć tej funkcji, aby plik został również usunięty z repo-
zytorium (przy najbliższym wywołaniu commit);
commit plik – przesyła zmiany wprowadzone w pliku do
repozytorium;
diff – wypisuje różnice pomiędzy plikami z kopii robo-
czej i ich wersjami z repozytorium;
import – przesyła pliki do repozytorium tworząc nowy
projekt;
• init – inicjuje repozytorium dodając w nim katalog
CVSROOT oraz domyślne pliki koniguracyjne;
• log – wyświetla informacje o zmianach w plikach;
• status – podaje informacje o aktualnym stanie plików
(numer wersji w repozytorium i kopii roboczej, czy pliki
były edytowane itp.);
tag znacznik – ustawia nazwę symboliczną znacznik
dla aktualnych wersji plików w repozytorium (można się
później do niej odwoływać z użyciem opcji -r znacznik).
Pobieramy projekt z repozytorium
Przyszedł czas na prawdziwą pracę. Zaczynając pracę
z naszym projektem musimy pobrać go z repozytorium.
W tym celu wybieramy sobie odpowiadający nam katalog,
www.linux.com.pl
61
439033848.002.png
dla programistów
w którym będziemy chcieli przechowywać pliki z projek-
tem. Może to być nawet katalog domowy ( ~/ ), gdyż wywo-
łanie polecenia, które za chwilę poznamy, spowoduje
utworzenie odpowiedniego podkatalogu. Podkatalog ten
będzie miał taką nazwę, jakiej użyliśmy w opcji nazwa_
modułu polecenia cvs import . No dobrze, zatem stwórzmy
katalog ~/projekty1/ i wykonajmy nasze polecenie:
mkdir ~/projekty1
cd ~/projekty1
cvs checkout projekt
W programie GCvs po prostu wybieramy opcję Create –>
Checkout module . W otwartym oknie tworzymy katalog
~/projekty1/ , po czym wchodzimy do niego i wciskamy OK .
W kolejnym oknie wpisujemy nazwę modułu do pobrania
( projekt ) i możemy znów wcisnąć OK . Jeszcze tylko wybie-
ramy opcję Query –> Reload view , dzięki czemu zostanie
uaktualniona lista katalogów i plików.
Teraz w katalogu ~/projekty1/projekt/ mamy nasze pliki,
które wcześniej znajdowały się w katalogu ~/projekt/ . Czy
coś się zmieniło? Tak – pojawiły się podkatalogi o nazwie
CVS/ . Zawierają one informacje o wersjach – nie należy ich
edytować ani kasować.
Rysunek 5. Wybieranie odpowiednich opcji porównania plików
jest znacznie wygodniejsze w interfejsie graficznym
które mają być wysłane do repozytorium. Wystarczy wyli-
czyć je na końcu polecenia, np.:
cvs commit plik1.c plik3.php
Możliwość ta jest bardzo przydatna, gdy chcemy już wysłać
uaktualnienie do niektórych plików, podczas gdy z innymi
zmodyfikowanymi chcemy jeszcze popracować.
W przypadku programu GCvs zaznaczamy pliki,
które chcemy uaktualnić (możemy też zaznaczyć kata-
log), a następnie wybieramy Modify –> Commit selection .
Podajemy komentarz dotyczący uaktualnienia, po czym
wciskamy OK .
Jeśli nad projektem pracuje więcej osób, to może
okazać się, że ktoś inny wysłał już uaktualnienie do popra-
wianego przez nas pliku. W takim przypadku polecenie cvs
commit zakończy się błędem i komunikatem zbliżonym do
poniższego:
Dokonywanie poprawek
Edycji plików dokonujemy w odpowiednich programach
– ta sprawa z oczywistych względów jest niezależna od CVS .
Tak więc do edycji plików tekstowych możemy użyć nasze-
go ulubionego edytora (np. Vim ), do retuszowania fotografii
(również ich wersjami można zarządzać dzięki CVS ) możemy
wykorzystać GIMP-a itd. Gdy dokonamy już poprawek i
jesteśmy z nich zadowoleni, należy wydać polecenie:
cvs commit
Zostaniemy poproszeni o podanie komentarza dotyczącego
tego uaktualnienia. Możemy też wskazać konkretne pliki,
cvs commit: Up-to-date check failed for `plik1.c'
W takim przypadku należy pobrać ( update ) do siebie
najnowszą wersję pliku, a następnie zapoznać się z róż-
nicami (pobrany plik będzie zawierał o nich informa-
cje). Po zlikwidowaniu konfliktów w pliku, możemy
skasować kopię zapasową (zapisaną w pliku o nazwie
.#nazwa_pliku ), a następnie ponownie wysłać plik do
repozytorium.
Pobieranie poprawek z repozytorium
Gdy mamy już na dysku (pobraną przez cvs checkout ) kopię
roboczą projektu, nie musimy jej już ponownie pobierać
w całości. Jeśli nad naszym projektem pracują i inne osoby,
to po każdej przerwie w pracy warto sprawdzić, czy nie
zostały wprowadzone jakieś poprawki. Dokonujemy tego
poleceniem wydanym w katalogu z projektem:
Rysunek 4. Praca z CVS w linii komend również jest dosyć
wygodna – wymaga tylko lepszej znajomości poleceń
cvs -n update
62
marzec 2004
439033848.003.png 439033848.004.png 439033848.005.png 439033848.006.png
Zgłoś jeśli naruszono regulamin