CVS

Извор: ВикиЕТФ

"Cvs" је један од старијих система за контролу измена али и поред тога има много тога да понуди. Иако је направљена "замена" за њега у виду "Svn"-а који решава неке његове недостатке, он се и даље интензивно користи. Он као и "Svn" ради на систему централног репозиторијума, одакле скидате радне копије и где шаљете натраг измене. Такође је могуће да више људи ради на истом фајлу, ако постоје конфликти покушава да их реши сам уколико су измене направљене у различитим деловима фајла у супротном оставља Вама да решите конфликт.

Такође је могуће радити гранање кода(фајлова), што је корисно када имате стабилно и текуће издање програма. Па у стабилно издање додајете само исправке, док у текућем издању додајете и нове могућности.

Садржај

Прављење репозиторијума

Прва ствар коју радимо пре него што започнемо пројекат је прављење репозиторијума. Репозиторијум можете направити у било којем директоријуму у систему све док водите рачуна да сви корисници који раде на пројекту имају приступ том директоријуму. Све кориснике који раде на пројекту ћу ставити у директоријум "staff", па ће и власничка група директоријума где се налази репозиторијум бити "staff".

$ sudo su
Password: ******
# mkdir /var/lib/cvsroot
# chgrp staff /var/lib/cvsroot
# ls -la /var/lib
total 153
drwxr-xr-x    2 root     staff      4096 Jun 28 16:31 cvsroot
...
# chmod g+srwx /var/lib/cvsroot
# ls -la /var/lib
total 153
drwxrwsr-x    2 root     staff      4096 Jun 28 16:31 cvsroot
...

Овим командама смо креирали директоријум у коме ће се налазити репозиторијум. Са програмом chmod смо такође променили дозволе тако да припадници групе "staff" могу да креирају и бришу фајлове унутар репозиторијума. Овде треба запазити да смо директоријуму репозиторијума ставили SGID бит дозволе да би сви фајлови креирани унутар директоријума репозиторијума припадали групи "staff". Треба знати и да ће сви фајлови наследити SGID бит дозволе.

# cvs -d /var/lib/cvsroot init
# ls -la /var/lib/cvsroot
total 12
drwxrwsr-x    3 root     anthill      4096 Jun 28 16:56 .
drwxr-xr-x   10 root     staff        4096 Jun 28 16:35 ..
drwxrwsr-x    3 root     anthill      4096 Jun 28 16:56 CVSROOT

Првом командом смо направили репозиторијум у директоријуму "/var/lib/cvsroot/".

Основне команде

cvs [cvs-options] command [command-options]

Горе видимо основну синтаксу коришћења CVS програма. Прво наводимо опције "cvs" програма ако их имамо, а онда команду коју желимо да извршимо и потом њене опције.

[:method[;option=arg...]:][[[user][:password]@]hostname[:[port]]]/path

Када наводимо локацију репозиторијума користимо ову синтаксу, једино што је обавезно је путања ка репозиторијуму, све остало је по избору.

Подсетник основних команди

Прво што ћемо урадити када радимо са CVS-ом а то је да убацимо наш пројекат у CVS репозиторијум. То ћемо урадити тако што ћемо да уђемо у директоријум пројекта и да извршимо следећу комадну.

# cvs -d putanja_do_repozitorijuma import Ime_Projekta Oznaka_Proizvodjaca Oznaka_Verzije
$ cvs -d /var/lib/cvsroot import test test_projekat ver_0-1
$ ls /var/lib/cvsroot
CVSROOT/
test/

Горе видимо синтаксу "cvs" програма за импортовање пројекта. Овде користимо комадну "import", а опција "-d" каже "cvs" програму где се налази репозиторијум. Име пројекта које задајемо као опцију "import" команди такође служи и као назив директоријума где држи све потребне фајлове који су потребни за одржавање репозиторијума. Остале две ознаке су саме по себи јасне.

Још би требало да знамо да ће ова команда да позове неки уређивач текста где ћемо навести наш коментар везан за текућу ревизију. Корисно је такође знати да уместо да наводимо стално опцију "-d [ime_repozitorijuma]" можемо да упишемо локацију репозиторијума у променљиву CVSROOT командног окружења.

$ CVSROOT="/var/lib/cvsroot"
$ export CVSROOT
$ cvs checkout
cvs checkout: Updating example
U example/file1
U example/file2
$ ls
example

Прве две команде би било корисно убацити у ".bashrc" фајл(стартовање) да не би морали стално да их извршавамо. Овде видимо и пример пријављивања на систем, што радимо само први пут да би покупили све фајлове. Касније ћемо само користити команду "update" за освежавање наше радне копије са променама из репозиторијума.

Ако се наш репозиторијум налази на удаљеној машини онда ћемо користити другу синтаксу за означавање локације репозиторијума.

# [:method[;option=arg...]:][[[user][:password]@]hostname[:[port]]]/path
$ cvs -d :ext:user_name@hostname/var/lib/cvsroot checkout

Као метод приступања репозиторијуму смо навели "ext" (external), још смо навели корисничко име, име сервера и путању до репозиторијума. Cvs приступа репозиторијуму користећи "ssh" протокол, па ако имамо намештен и стартован "ssh" сервис на рачунару где се налази репозиторијум све ће радити.

$ cd ~/cvs/example
$ cvs commit

Када изменимо фајлове које се налазе у нашој радној копији користимо команду "commit" да би смо те измене послали на репозиторијум. Треба запазити да је ово прва команда код које не морамо да наводимо локацију репозиторијума пошто је она уписана у контролне фајлове радне копије.

Ако је репозиторијум измењен онда ће слање измена бити неуспешно. Онда ћете морати да радите "update" и да разрешите све конфликте и на крају ћете урадити "commit" поново. Па да наведем пример:

1$ cvs commit
cvs commit: Examining .
cvs commit: Up-to-date check failed for `tutorial.pl'
cvs [commit aborted]: correct above errors first!
cvs commit: saving log message in /tmp/cvs5NqzTu

2$ cvs update
cvs update: Updating .
RCS file: /var/lib/cvsroot/curses_ui/tutorial.pl,v
retrieving revision 1.1.1.1
retrieving revision 1.2
Merging differences between 1.1.1.1 and 1.2 into tutorial.pl
M tutorial.pl

3$ cvs commit
cvs commit: Examining .
Checking in tutorial.pl;
/var/lib/cvsroot/curses_ui/tutorial.pl,v  <--  tutorial.pl
new revision: 1.3; previous revision: 1.2
done

4$ cvs update
cvs update: Updating .

У првом примеру видите да нисам успео да пошаљем своје измене на репозиторијум пошто је моја радна копија била старија. Онда сам урадио освежавање радне копије и "cvs" је разрешио конфликт, ако су конфликти неразрешиви пустиће Вас да га исправите. У трећем кораку сам урадио "commit" поново, овај пут успешно, и на крају сам освежио своју радну копију.

Да би сте додали нови фајл користите команду чудног имена "add". Директоријуме додајете као да су обични фајлови, осим што не можете да додајете фајлове који се налазите у њему док не додате директорију, па да видимо то на примеру.

$ touch file3
$ cvs add file3
cvs add: scheduling file 'file3' for addition
cvs add: use 'cvs commit' to add this file permanently
$ cvs commit
...
Log message editor opens
...
RCS file: /var/lib/cvsroot/example/file3,v
done
Checking in file3;
/var/lib/cvsroot/example/file3,v  <--  file3
initial revision: 1.1
done
Команда Опис
import Слање иницијалне верзије на репозиторијум.
remove Брише фајл.
add Додаје фајл.
checkout Прави локалну копију репозиторијума.
commit Шаље измене назад на репозиторијум.
update Освежава локалну копију.

Везе

Спољашње везе

Добављено из „http://wiki.etf.rs/wiki/CVS
Личне алатке
Именски простори
Варијанте
Акције
Навигација
Алатке