opensource
Download
Skip this Video
Download Presentation
Opensource софтуерни хранилища

Loading in 2 Seconds...

play fullscreen
1 / 22

Opensource софтуерни хранилища - PowerPoint PPT Presentation


  • 106 Views
  • Uploaded on

Георги Пенков. Българска асоциация на разработчиците на софтуер. www.devbg.org. Opensource софтуерни хранилища. CVS - Concurent Versioning System. Въведение. SVN – Subversion Появява се през 2000г. Сред дизайнерите е и авторът на книгата ”Open Source Development with CVS”

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Opensource софтуерни хранилища' - sileas


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
opensource

Георги Пенков

Българска асоциация на разработчиците на софтуер

www.devbg.org

Opensource софтуерни хранилища

CVS - Concurent Versioning System

slide2
Въведение

SVN – Subversion

Появява се през 2000г.

Сред дизайнерите е и авторът на книгата ”Open Source Development with CVS”

Създаден с цел:

да прилича на CVS

да избегне ограниченията на CVS

Резултатът е мощна, лесна за използване и гъвкава система за софтуерно хранилище

subversion
Subversion предоставя

История (versioning) на директорийната структура

Пълна история на всички промени

изтриване на файлове и директории

преименуване на файлове и директории

заменяне на файлове и директории

Може да работи както самостоятелно, така и интегриран с Apache като модул

Алгоритъмът за запазване на разликите между ревизиите работи еднакво добре с текстови и двоични файлове

Файловете се съхраняват компресирани в хранилището

Работи ефективно с разклонения(branches) и етикети(tag)

slide5
Програмно обкръжение на SVN

svn – инструмент за достъп от командния ред

svnversion – програма, която дава информация за състоянието (в смисъл на ревизии и т.н.) на работното копие.

svnlook – инструмент за преглед на Subversion хранилището

svnadmin – инструмент за администрация на хранилището

svndumpfilter – инструмет за създаване на dump-ове на хранилището

mod_dav_svn – модул за Apache HTTP Server, който прави хранилището достъпно през web

svnserve – самостоятелно сървърно приложение, което може да работи както отделно, така и в комбинация със SSH

slide6
Създаване на хранилище

С помоща на командата create

В SVN понятието project не съществува

Хранилището е просто едно голямо файлово дърво, за което се пази пълна история на промените

$ svnadmin create /path/to/repos

$ ls /path/to/repos

conf/ dav/ db/ format hooks/ locks/ README.txt

slide7
Въвеждане на проект в хранилището

Препоръчителен формат на директорията на проекта преди импорт:

Формат на командата за импорт:

/tmp/myproject/branches/

/tmp/myproject/tags/

/tmp/myproject/trunk/

foo.c

bar.c

Makefile

svn import /tmp/myproject file:///path/to/repos/myproject/trunk -m "initial import"

slide8
Създаване на локално копие

С помоща на командата checkout:

Пътя до хранилището е винаги URL

$ svn checkout file:///path/to/repos/myproject/trunk myproject

A myproject/foo.c

A myproject/bar.c

A myproject/Makefile

Checked out revision 1.

commit
Запазване на промените. Commit

Подобно на CVS със командата commit

Всички commit операции са атомарни

За разлика от CVS ревизиите са общи за дървото на проекта

Номерът на ревизиятаидентифицира цялотодърво в даден моментот разработката

slide10
Ревизии в SVN

Въпреки, че в хранилището версията е за цялото дърво, в локалното копие може да има файлове с различни ревизии

Операция commit почти винаги създава локално копие с различни ревизии на файловете

Файловете, които са били запазени при последния commit в хранилището, са с най-висок номер на ревизия спрямо останалите в локалното копие

Файловете от локалното копие ще придобият една обща ревизия при следващия update

С други думи – commit и update са абсолютно независими операции

slide11
Ревизии в SVN. Пример

Локалното копие може да съдържа файлове с различна ревизия след нанасяне на промени:

Ако друг програмист промени междувременно някой файл, след update ревизиите ще изглеждат така:

calc/Makefile:4

integer.c:4

button.c:5

calc/Makefile:6

integer.c:6

button.c:6

slide12
Преглед на информация за ревизиите

С помоща на ”svn status –verbose” получаваме информация за ревизията на локалното копие и отделните ревизии на файловете.

Допълнително ”svn –show-updates” ни показва кой файл има нужда от update:

С помоща на ”svn log” може да получаваме история на ревизиите както общо за локално копие, така и само за даден файл:

3 3 user .

5 5 user new.txt

M 3 2 user README.txt

------------------------------------------------------------------------

r2 | user | 2006-09-21 17:13:00 +0300 (Thu, 21 Sep 2006) | 1 line

some commit

slide13
Ключови думи за ревизии

SVN поддържа специални ключови думи за обозначаване на някои ”специални” ревизии:

HEAD – най-новата ревизия в хранилището

BASE – ревизията, която е имало локалното копие преди нанасяне на промени

COMMITED – номер на ревизията при последното съхранение в хранилището. Равна или по-малка от BASE

PREV – номер на предната ревизия преди тази, която е била съхранена при последния commit

За да бъдат използвани с подава параметър --revision

При работа с нелокално URL може да се ползва само HEAD

update
Операция update и статуси

Операция update работи по начин подобен на този при CVS като SVN ни известява за резултата със следните статуси:

U foo – файл foo е бил променен (с промени от хранилището).

A foo – файл или директория foo са били добавени в работно копие.

D foo – файл или директория foo са били изтрити.

R foo – файл или директория foo е бил заменен с друг такъв със същото име.

G foo – файл foo е получил промени от хранилището, но локалното копие е било също променено. Или промените не са се засичали, или са били същите като локалното копие.

C foo – има конфликт с файла foo. Той трябва да бъде разрешен ръчно.

slide15
Разрешаване на конфликти

Ако конфликтът е в текстов файл, SVN поставя маркери около конфликтните части.

Допълнително SVN създава няколко допълнителни файла със специални разширения:

filename.mine – това е локалното копие на файла, по начина по който е изглеждал преди да бъде извършена операция update

filename.rOLDREV – това е файла с BASE ревизията, т.е. файла който е бил изтеглен от хранилището преди нанасяне на примени

fename.rNEWREV – това е варианта с HEAD ревизия, който отговаря на най-новата ревизия от хранилището.

Commit не е възможен, ако допълнителните файлове са налични и докато не бъде изпълнена команда resolved - ”svn resolved conflicted.file.ext”

slide16
Преглед на файлове

Команда list – позволява преглед на списъка на файловете от дадена директория в хранилището, без да бъдат изтегляни

Параметър -v за повече информация

Команда cat – позволява лесно преглеждане на съдържанието на даден файл

В комбинация с --revision параметър, cat и list дават възможност за преглеждане на точно определена ревизия на дадения файл

slide17
Разклонения

Разклоненията в SVN се реализират, като се копира директорията, която искаме да разклоним.

Копиране на файлове и директории в хранилището става с команда copy.

След използвне на copy трябва да отразим промените с commit:

host$ svn copy trunk branches/my-calc-branch

host$ svn status

A + branches/some_branch

$ svn commit

Adding branches/some_branch

Adding branches/some_branch/file.txt

...

slide18
Ефект върху хранилището

При операция copy не се прави директно копие на цялото дърво.

Използва се подход подобен на създаването на hard-link.

Реално нарастване на хранилището ще има едва след нанасяне на промени върху даден файл от разклонението

Методът често се нарича ”cheap copies”

slide19
Сливане

Операцията сливане е много подобна на diff

Разликите между сравнявание версии обаче се сливат директно в работното копие:

За разлика от diff, merge очаква път до мястото, където да бъде записано слятото копие.

$ svn merge -r 343:344 http://svn.example.com/repos/calc/trunk

U integer.c

$ svn status

M integer.c

svnadmin
Архивни копия със svnadmin

Сваляне на архивно копие (dump):

Възстановяване на архивно копие (load)

host$ svnadmin dump /path/to/repos > repos-dumpfile

host$ svnadmin load /usr/local/svn/restored < repos-backup

<<< Started new txn, based on original revision 1

* adding path : test ... done.

* adding path : test/a ... done.

slide21
Други възможности

Hook Scripts – тригери при някои основни операции

Properties

svnserve – самостоятелен сървър.

метод за достъп svn://

метод за достъп ssh+svn://

Apache 2.0 WebDAV модул

host$ svn propset propname \'property content\' path/to/file.ext

host$ svn checkout http://host.example.com:7382/repos/project

slide22
Заключение

Въпроси и коментари ?

ad