Субверзија у акција

Радна копија

Већ сте читали о радној копији; сада ћемо демонстрирати како је Субверзиони клијент креира и користи.

Субверзиона радна копија је обично стабло фолдера у вашем локалном систему, које садржи колекцију фајлова. Ви можете уредити ове фајлове како желите, и ако су фајлови изворног кода, можете од њих компајлирати ваш програм на уобичајен начин. Ваша радна копија је ваша лична приватна радна површина: Субверзија неће инкорпорирати измене других људи, нити ће урадити ваше промене доступне другима, све док јој експлицитно не кажете да то уради.

Када сте направили неке измене у фајловима у вашој радној копији и проверите да то ради исправно, Субверзија вам омогућава да командама публикујете ваше измене другим људима који раде са вама на вашем пројекту (писањем у спремиште). Ако други људи публикују своје измене, Субверзија вам омогућава командама за спајање тих измена у ваш радни фолдер (читањем из спремишта).

Радна копија такође садржи неке додатне фајлове, креиране и подржане од Субверзије, да помогну њено извршење ових команди. У основи, ваша радна копија садржи поддиректоријум назван .свн, такође познат као радне копије административни директоријум . Фајлови у административном директоријуму помажу Субверзији да препозна који фајлови садрже непубликоване измене, и који фајлови су неусаглашени у односу на остали рад. Пре 1.7 Субверзија је одржавала .свн административне поддиректоријуме у сваком верзионисаном директоријуму радне копије. Субверзија 1.7 узима потпуно различит приступ и свака радна копија сада има само један административни поддиректоријум који је непосредан потомак корена радне копије.

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

На пример, претпоставимо да имате спремиште које садржи два софверска пројекта.

Слика 2.6. Фајлсистем спремишта

Фајлсистем спремишта

Другим речима, корени фолдер спремишта има два подфолдера: paint and calc.

Да би се добила радна копија морате преузети неко подстабло из спремишта. (Термин преузимање може звучати као да има нешто да се уради са закључавањем и резервисањем ресурса, али то нијеч то једноставно креира приватну копију пројекта за вас.)

Претпоставимо да сте направили измене у буттон.ц. Пошто .свн директоријум памти податке измене фајла и оригинални садржај, Субверзија може рећи да сте изменили фајл. Међутим, Субверзија не чини ваше измене јавним све док јој то не кажете. Чин публиковања ваших измена обично се зове урезивање (или уписивање ) измена у спремиште.

Да би публиковали ваше измене другима, можете користити Субверзиону команду урежи.

Сада ваше измене у буттон.ц су урезане у спремиште; ако други корисник провери радну копију /калк, видеће ваше измене у задњој верзији фајла.

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

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

Забележите да Сали не треба да специфира које фајлове ускладити; Субверзија користи информације у .свн фолдеру, и даље информације у спремишту, да одлучи које фајлове треба ускладити.

УРЛ спремишта

Субверзионом спремишту може бити приступљено кроз много различитих метода - на локалном диску, или кроз разне мрежне протоколе. Мест спремишта, међутим, је увек на УРЛ. УРЛ шема означава метод приступа:

Табела 2.1. УРЛ приступ спремишту

ШемаПриступни метод
file:// Директни приступ спремишту на локалном мрежном уређају.
http:// Приступ преко ВебДАВ протокола за Субверзионо познавање Апаш сервера.
https:// Исто као http://,али са ССЛ енскрипцијом.
свн:// Неаутентичан ТЦП/ИП приступ преко обичног протокола ка свнсерве серверу.
свн+ссх:// аутентичан, шифриран ТЦП/ИП приступ преко обичног протокола ка свнсерве серверу.

За многе делове Субверзиони УРЛови користе стандардну синтаксу дозвољавајући серверским именима бројевима портова да буду специфицирани као део УРЛа. file:// метод приступа се нормално користи за локални приступ, такође може се користити са УНЦ путњом до мрежног домаћина. УРЛ дакле узима облик file://hostname/path/to/repos. За локалну машину hostname део УРЛ се захтева да није присутно или да је localhost. Из овог разлога локална путања се нормално јавља са три косе црте file:///path/to/repos.

Такође корисници file:// шеме на Виндоуз платформама треба да користе неофицијалну стандардну синтаксу за приступ спремишту која су на истој машини, али на различитим уређајима од оног где је клијентов радни уређај. Свака од следеће две синтаксе УРЛ путања ће радити где је X драјв на коме спремиште обитава.

file:///X:/path/to/repos
...
file:///X|/path/to/repos
...
      

Приметимо да УРЛ користи обичне косе црте чак и кад природни (не УРЛ) облик путање на Виндоузу користи обрнуте косе црте.

Можете приступити ФСФС спремишту преко мрежног дељења али ово није препоручљиво због разних разлога:

  • Ви дајете директан приступ уписивању свим корисницима, тако они могу случајно обрисати или уништити фајл систем спремишта.

  • Сви мрежни протоколи дељења фајлова не подржавају захтеве закључавања субверзије. Једног дана наћићете да је ваше спремиште суптилно уништено.

  • Потребно је да подесите приступну дозволу на прави начин. САМБА је посебно тешка у овом погледу.

  • Ако једна особа инсталира нову верзију клијента која догради формат спремишта сви остали неће бити способни да приступе спремишту док такође не дограде нову верзију клијента.

Ревизије

Операција свн урежи публикује измене било ког броја фајлова и фолдера као једну атомик трансакцију. У вашој радној копији можете мењати садржај фајлова, креирати, брисати, преименовати и копирати фајлове и фолдере и онда урежете укупан скуп измена као јединицу.

У спремишту савако урезивање се тртира као атомик трансакција: или се урежу све промене или ниједна. Субверзија чува ову атомичност у случају пуцања програма или система, мрежних проблема и других акција корисника.

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

Леп начин да се визуализује спремиште је серија стабала. Замислимо област ревизионих бројева, почевши од нуле, развучених с лева у десно. Сваки ревизиони број има фајлсистем стабло виси испод њега и свако стабло је назнака како спремиште изгледа после урезивања.

Слика 2.7. Спремиште

Спремиште

Важно је приметити да радна копија не кореспондира увек било којој појединачној ревизији у спремишту; она може садржати фајлове из више различитих ревизија. На пример, претпоставимо да преузимате радну копију из спремишта чија је најскорија ревизија 4:

calc/Makefile:4
integer.c:4
button.c:4
      

Тренутно овај радни фолдер одговара тачно ревизији 4 у спремишту. Међутим, претпоставимо да измените буттон.ц, и урежете измене. Узмимо да није било других урезивања, ваше урезивање креира ревизију 5 спремишта и ваша радна копија сада изгледа овако:

calc/Makefile:4
integer.c:4
button.c:5
      

Претпоставимо то, у том тренутку, Саки урезује измене интегер.ц, креирајући ревизију 6. Ако користите свн усклади да доведете вашу радну копију у усклађено стање то ће изгледати овако:

calc/Makefile:6
integer.c:6
button.c:6
      

Саине измене integer.c се појављују у вашој радној копији и ваше измене су још присутне у button.c. У овом примеру, текст у Makefile је идентичан у ревизијама 4,5 и 6, али Субверзија ће означити вашу радну копију Makefile ревизијом 6 да индицира да је још текућа. Тако, после урађеног чистог обнављања на врх ваше радне копије она ће генерално кореспондирати тачно једној ревизији у спремишту.

Како радна копија прати спремиште

За сваки фајл у радном фолдеру Субверзија уписује два важна комада информација у .свн/ администаративну област:

  • на коју ревизију је радни фајл базиран (ово се зове фајлова радна ревизија ), и

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

Дајући ове информације, говорећи спремишту, Субверзија може рећи које од следећих четири статуса има радни фајл:

Неизмењен и текући

Фајл је неизмењен у радном фолдеру, и нема измена тог фајла при урезивању у спремиште од његове радне ревизије. Урезивање фајла не ради ништа, и обнављање фајла не ради ништа.

Локално измењен и текући

Фајл је измењен у радном фолдеру и измене нису урезане у спремиште од основне ребжвизије. Постоје локалне измене које још нису урезане у спремиште, тако урезивање фајла ће пратити публиковање ваших измена у спремиште, а обнављање фајла неће урадити ништа.

Непромењен и застарео

Фајл није измењен у радном фолдеру али је измењен у спремишту. Фајл би требало да буде обновљен да се учини савремен са јавном ревизијом. Урезивање фајла не ради ништа, а обнављање фајла уводи задње измене у вашу радну копију.

Локално измењен и застарео

Фајл је измењен у оба случаја и у радном фолдеру и у спремишту. Урезивање фајла биће неуспешно са грешком застарео. Фајл се мора најпре ускладити; са командомусклади покушаће се спајање јавних измена са локалним изменама. Ако Субверзија не може потпуно да стопи на разуман начин аутоматски, она оставља кориснику да разреши конфликт.