Svn

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

SVN је само један од низа програма за контролу измена (revision control). Направљен је са намером да замени старији CVS.

Као и сваки такав систем има опције које су честe међу програмима те намене. За разлику од свог старијег рођака има подршку за прављење историје измена директоријума, померање и копирање фајлова (задржава читаву историју измена). Такође има знатно бољу подршку за бинарне фајлове. Па није ни чудо што су неки велики пројекти прешли на њега, па да набројим неке: KDE, Mono, Samba, GCC, Apache, Python,...

Садржај

Општи речник

Навешћу редом појмове који су везани за програме за контролу измена.

Термин Појашњење
Baseline (Основа) Одобрена верзија документа или програмски код од кога се праве следеће верзије.
Branch (Гранање) Скуп фајлова под контролом система за контролу измена може бити раздвојен у две различите копије које се развијају независно. Чест пример је развијање нове верзије, где се убацују нове могућности и самим тим долази до нових грешака, и стабилна верзија где се само исправљају уочене грешке.
Check-out (Пријављивање) Је процес скидања најновије копије (или оне које смо експлицитно навели) из репозиторијума.
Conflict (Сукоб) Ако се један фајл измени од стране више људи може доћи до сукоба. У већини случајева ћете морати да га решавате ручно.
Change Када уносите промене svn памти само промењени део (делта компресија). Тако да можете лако да се вратите на претходне верзије, и штедите на простору.
Export (Извоз) Је операција слична пријављивању, само што добијамо верзију без фајлова за контролу измена. Ово радимо пре него што ставимо изворни код нашег програма на интернет.
Import (Увоз) Је процес уношења прве верзије у репозиторијум.
Repоsitory (Репозиторијум) Је рачунар на коме се налазe текуће и претходне верзије докумената, углавном је то на удаљеном серверу али лако може бити на локалном рачунару.
Tag Је снимак важне верзије програма која обухвата све фајлове.

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

Да бисмо направили наш локални репозиторијум користимо svnadmin команду која служи за озбиљније промене.

$ svnadmin create ImeRepozitorijuma

Ова команда прави директоријум ImeRepozitorijuma заједно са свом структуром која је потребна да подржи верзионисање фајлова. Постоји укупно пет различитих директоријума у нашем репозиторијуму:

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

Када смо направили репозиторијум још остаје да унесемо фајлове у њега. Треба да променимо текући директоријум у директоријум пројекта који желимо да извеземо у репозиторијум. Ту ћемо да употребимо команду import за ту намену и навешћемо путању до репозиторијума (на локалном фајл систему у овом случају).

$ svn import file:///usr/share/ImeRepozitorijuma -m "Prva verzija"
Adding  (bin)  sudari
Adding         sudari.c
Adding         Makefile
 
Committed revision 1.

Можемо да проверимо да ли је пренос успешно направљен тако што ћемо да излистамо фајлове у репозиторијуму са командом ls.

Команда "ls" је само једна од низа команди које прима "svn" а које су сличне командама које користимо на нашем систему да би руковали фајловима. Ове команде су ту да би могли да копирамо, померамо и бришемо фајлове у нашем репозиторијуму а да сачувамо све измене.

$ svn ls file:///usr/share/ImeRepozitorijuma
Makefile
sudari
sudari.c

Када желимо да ископирамо садржај репозиторијума у наш радни директоријум користимо "svn" команду "co".

Ако већ имамо ископиран садржај репозиторијума онда користимо команду "update" да би га освежили.

$ svn co file:///usr/share/ImeRepozitorijuma
A    rep/sudari
A    rep/sudari.c
A    rep/Makefile
Checked out revision 1.

Да бисмо видели статус тренутних измена користимо команду "status". У излазу статус команде словo 'M' у првој колони означава измену тог фајла, 'A' додат фајл, 'D' избрисан фајл,...

$ svn status
M      sudari.c

Такође можемо користити опцију -v за проширени приказ status команде. Прва колона означава верзију у локалној копији, а друга означава верзију коју смо скинули из складишта.

$ svn status -v
                1        1 stanislav    .
                2        2 stanislav    sudari.c
                1        1 stanislav    Makefile

Увек треба да користимо cp, mv, rm команде преко "svn" клијента када радимо са фајловима унутар репозиторијума! То је битно због очувања података о изменама неког фајла и после његовог копирања или померања.

$ svn cp sudari.c main.c
$ svn rm main.c

Kada желимо да пошаљемо натраг наше измене у репозиторијум онда користимо команду ci (commit).

$ svn ci
Deleting       sudari
Sending        sudari.c
Transmitting file data .
Committed revision 2.

Сада смо освежили репозиторијум са измењеним садржајем у нашем текућем директоријуму. Али битно је да знамо да је наш радни директоријум неосвежен и да бисмо га освежили са променама из репозиторијума користимо команду "update".

Да бисмо видели детаље о свакој од ових команди користимо команду help и као параметар јој дајемо име команде коју желимо ближе да упознамо.

$ svn help status
status (stat, st): Print the status of working copy files and directories.
usage: status [PATH...]

  With no args, print only locally modified items (no network access).
  With -u, add working revision and server out-of-date information.

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

Команда Опис
import Слање иницијалне верзије на репозиторијум.
rm Брише фајл из репозиторијума.
add Додаје фајл у репозиторијум.
ls Листа фајлове у репозиторијуму.
mv Помера фајлове и задржава информације о претходним изменама.
cp Копирање фајлова са задржавањем претходних измена.
co Прави локалну копију репозиторијума.
ci Шаље измене назад на репозиторијум. Често се користи са -m "Opisna recenica", да бисмо објаснили измене које смо направили.
update Освежава локалну копију.
status Провера тренутног стања фајлова у вашој локалној копији.
help Даје упутство о команди чије смо име навели на стандардном излазу.

esvn

Постоје графички интерфејси који умногоме олакшавају рад са svn-ом. Овде ћу укратко да опишем esvn.

File->Checkout добићете прозор за уношење URL адресе репозиторијума, корисничко име и лозинка (ако је потребно), и Local Path путања где ће сачувати локалну копију.

Када то урадите отворите директоријум који сте навели у текстуалном пољу Local Path, File->Open Working Directory.

Обавезно промените едитор ако вам не одговара подразумевани, File->Options.

Када измените неки фајл можете да урадите commit са Modify->Commit.

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

Ово је само списак кратак списак команди за подсећање. Све команде које се извршавају на одредишној машини почињу "rtidev4 $", а на локалној са "$":

rtidev4 $ svnadmin create svn
rtidev4 $ ls -l svn
total 8
drwxr-xr-x 2 user user 128 2009-04-02 09:08 conf
drwxr-xr-x 2 user user  48 2009-04-02 09:08 dav
drwxr-sr-x 5 user user 256 2009-04-02 09:08 db
-r--r--r-- 1 user user   2 2009-04-02 09:08 format
drwxr-xr-x 2 user user 360 2009-04-02 09:08 hooks
drwxr-xr-x 2 user user 104 2009-04-02 09:08 locks
-rw-r--r-- 1 user user 229 2009-04-02 09:08 README.txt
rtidev4 $ pwd
/home/user

Овим смо креирали репозиторијум на "rtidev4" машини. Сада још остаје да видимо како ћемо да приступамо са локалне машине на репозиторијум.

$ svn co svn+ssh://user@rtidev4.etf.bg.ac.yu/home/user/svn/ pos_example
$ cd pos_example
$ svn add first.c
$ svn ci -m "Inicijalna verzija"
$ svn update

Као што видимо само једанпут је потребно унети локацију репозиторијума пошто га "svn" пампти у "pos_example/.svn". Такође запамтите да после сваког "ci" команде радите "update" да бисте увек имали свежу копију репозиторијума.

Везе

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

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