Поддерживать
www.wikidata.ru-ru.nina.az
Sistema upravleniya versiyami takzhe ispolzuetsya opredelenie sistema kontrolya versij ot angl version control system VCS ili revision control system programmnoe obespechenie dlya oblegcheniya raboty s izmenyayushejsya informaciej Sistema upravleniya versiyami pozvolyaet hranit neskolko versij odnogo i togo zhe dokumenta pri neobhodimosti vozvrashatsya k bolee rannim versiyam opredelyat kto i kogda sdelal to ili inoe izmenenie i mnogoe drugoe Takie sistemy naibolee shiroko ispolzuyutsya pri razrabotke programmnogo obespecheniya dlya hraneniya ishodnyh kodov razrabatyvaemoj programmy Odnako oni mogut s uspehom primenyatsya i v drugih oblastyah v kotoryh vedyotsya rabota s bolshim kolichestvom nepreryvno izmenyayushihsya elektronnyh dokumentov V chastnosti sistemy upravleniya versiyami primenyayutsya v SAPR obychno v sostave sistem upravleniya dannymi ob izdelii PDM Upravlenie versiyami ispolzuetsya v instrumentah konfiguracionnogo upravleniya Software Configuration Management Tools Programmnoe obespechenie Vikipedii vedyot istoriyu izmenenij dlya vseh eyo statej ispolzuya metody analogichnye tem kotorye primenyayutsya v sistemah upravleniya versiyami Obshie svedeniyaSituaciya v kotoroj elektronnyj dokument za vremya svoego sushestvovaniya preterpevaet ryad izmenenij dostatochno tipichna Pri etom chasto byvaet vazhno imet ne tolko poslednyuyu versiyu no i neskolko predydushih V prostejshem sluchae mozhno prosto hranit neskolko variantov dokumenta numeruya ih sootvetstvuyushim obrazom Takoj sposob neeffektiven prihoditsya hranit neskolko prakticheski identichnyh kopij trebuet povyshennogo vnimaniya i discipliny i chasto vedyot k oshibkam poetomu byli razrabotany sredstva dlya avtomatizacii etoj raboty Tradicionnye sistemy upravleniya versiyami ispolzuyut centralizovannuyu model kogda imeetsya edinoe hranilishe dokumentov upravlyaemoe specialnym serverom kotoryj i vypolnyaet bo lshuyu chast funkcij po upravleniyu versiyami Polzovatel rabotayushij s dokumentami dolzhen snachala poluchit nuzhnuyu emu versiyu dokumenta iz hranilisha obychno sozdayotsya lokalnaya kopiya dokumenta tak nazyvaemaya rabochaya kopiya Mozhet byt poluchena poslednyaya versiya ili lyubaya iz predydushih kotoraya mozhet byt vybrana po nomeru versii ili date sozdaniya inogda i po drugim priznakam Posle togo kak v dokument vneseny nuzhnye izmeneniya novaya versiya pomeshaetsya v hranilishe V otlichie ot prostogo sohraneniya fajla predydushaya versiya ne stiraetsya a tozhe ostayotsya v hranilishe i mozhet byt ottuda poluchena v lyuboe vremya Server mozhet ispolzovat t n delta kompressiyu takoj sposob hraneniya dokumentov pri kotorom sohranyayutsya tolko izmeneniya mezhdu posledovatelnymi versiyami pozvolyaet umenshit obyom hranimyh dannyh Poskolku obychno naibolee vostrebovannoj yavlyaetsya poslednyaya versiya fajla sistema mozhet pri sohranenii novoj versii sohranyat eyo celikom zamenyaya v hranilishe poslednyuyu ranee sohranyonnuyu versiyu na raznicu mezhdu etoj i poslednej versiej Nekotorye sistemy naprimer ClearCase podderzhivayut sohranenie versij oboih vidov bolshinstvo versij sohranyaetsya v vide delt no periodicheski po specialnoj komande administratora vypolnyaetsya sohranenie versij vseh fajlov v polnom vide takoj podhod obespechivaet maksimalno polnoe vosstanovlenie istorii v sluchae povrezhdeniya repozitoriya Inogda sozdanie novoj versii vypolnyaetsya nezametno dlya polzovatelya prozrachno libo prikladnoj programmoj imeyushej vstroennuyu podderzhku takoj funkcii libo za schyot ispolzovaniya specialnoj fajlovoj sistemy V etom sluchae polzovatel prosto rabotaet s fajlom kak obychno i pri sohranenii fajla avtomaticheski sozdayotsya novaya versiya Chasto byvaet chto nad odnim proektom odnovremenno rabotayut neskolko chelovek Esli dva cheloveka izmenyayut odin i tot zhe fajl to odin iz nih mozhet sluchajno otmenit izmeneniya sdelannye drugim Sistemy upravleniya versiyami otslezhivayut takie konflikty i predlagayut sredstva ih resheniya Bolshinstvo sistem mozhet avtomaticheski obedinit slit izmeneniya sdelannye raznymi razrabotchikami Odnako takoe avtomaticheskoe obedinenie izmenenij obychno vozmozhno tolko dlya tekstovyh fajlov i pri uslovii chto izmenyalis raznye neperesekayushiesya chasti etogo fajla Takoe ogranichenie svyazano s tem chto bolshinstvo sistem upravleniya versiyami orientirovany na podderzhku processa razrabotki programmnogo obespecheniya a ishodnye kody programm hranyatsya v tekstovyh fajlah Esli avtomaticheskoe obedinenie vypolnit ne udalos sistema mozhet predlozhit reshit problemu vruchnuyu Chasto vypolnit sliyanie nevozmozhno ni v avtomaticheskom ni v ruchnom rezhime naprimer esli format fajla neizvesten ili slishkom slozhen Nekotorye sistemy upravleniya versiyami dayut vozmozhnost zablokirovat fajl v hranilishe Blokirovka ne pozvolyaet drugim polzovatelyam poluchit rabochuyu kopiyu ili prepyatstvuet izmeneniyu rabochej kopii fajla naprimer sredstvami fajlovoj sistemy i obespechivaet takim obrazom isklyuchitelnyj dostup tolko tomu polzovatelyu kotoryj rabotaet s dokumentom Mnogie sistemy upravleniya versiyami predostavlyayut ryad drugih vozmozhnostej Pozvolyayut sozdavat raznye varianty odnogo dokumenta t n vetki s obshej istoriej izmenenij do tochki vetvleniya i s raznymi posle neyo Dayut vozmozhnost uznat kto i kogda dobavil ili izmenil konkretnyj nabor strok v fajle Vedut zhurnal izmenenij v kotoryj polzovateli mogut zapisyvat poyasneniya o tom chto i pochemu oni izmenili v dannoj versii Kontroliruyut prava dostupa polzovatelej razreshaya ili zapreshaya chtenie ili izmenenie dannyh v zavisimosti ot togo kto zaprashivaet eto dejstvie Tipichnyj poryadok raboty s sistemojKazhdaya sistema upravleniya versiyami imeet svoi specificheskie osobennosti v nabore komand poryadke raboty polzovatelej i administrirovanii Tem ne menee obshij poryadok raboty dlya bolshinstva VCS sovershenno stereotipen Zdes predpolagaetsya chto proekt kakim by on ni byl uzhe sushestvuet i na servere razmeshyon ego repozitorij k kotoromu razrabotchik poluchaet dostup Nachalo raboty s proektom Pervym dejstviem kotoroe dolzhen vypolnit razrabotchik yavlyaetsya izvlechenie rabochej kopii proekta ili toj ego chasti s kotoroj predstoit rabotat Eto dejstvie vypolnyaetsya s pomoshyu komandy izvlecheniya versii obychno checkout ili clone Razrabotchik zadayot versiyu kotoraya dolzhna byt skopirovana po umolchaniyu obychno kopiruetsya poslednyaya ili vybrannaya administratorom v kachestve osnovnoj versiya Po komande izvlecheniya ustanavlivaetsya soedinenie s serverom i proekt ili ego chast odin iz katalogov s podkatalogami v vide dereva katalogov i fajlov kopiruetsya na kompyuter razrabotchika Obychnoj praktikoj yavlyaetsya dublirovanie rabochej kopii pomimo osnovnogo kataloga s proektom na lokalnyj disk libo v otdelnyj specialno vybrannyj katalog libo v sistemnye podkatalogi osnovnogo dereva proekta dopolnitelno zapisyvaetsya eshyo odna ego kopiya Rabotaya s proektom razrabotchik izmenyaet tolko fajly osnovnoj rabochej kopii Vtoraya lokalnaya kopiya hranitsya v kachestve etalona pozvolyaya v lyuboj moment bez obrasheniya k serveru opredelit kakie izmeneniya vneseny v konkretnyj fajl ili proekt v celom i ot kakoj versii byla otpochkovana rabochaya kopiya kak pravilo lyubaya popytka ruchnogo izmeneniya etoj kopii privodit k oshibkam v rabote programmnogo obespecheniya VCS Ezhednevnyj cikl raboty Pri nekotoryh variaciyah opredelyaemyh osobennostyami sistemy i detalyami prinyatogo tehnologicheskogo processa obychnyj cikl raboty razrabotchika v techenie rabochego dnya vyglyadit sleduyushim obrazom Obnovlenie rabochej kopii Po mere vneseniya izmenenij v osnovnuyu versiyu proekta rabochaya kopiya na kompyutere razrabotchika stareet rashozhdenie eyo s osnovnoj versiej proekta uvelichivaetsya Eto povyshaet risk vozniknoveniya konfliktnyh izmenenij sm nizhe Poetomu udobno podderzhivat rabochuyu kopiyu v sostoyanii maksimalno blizkom k tekushej osnovnoj versii dlya chego razrabotchik vypolnyaet operaciyu obnovleniya rabochej kopii update naskolko vozmozhno chasto realnaya chastota obnovlenij opredelyaetsya chastotoj vneseniya izmenenij zavisyashej ot aktivnosti razrabotki i chisla razrabotchikov a takzhe vremenem zatrachivaemym na kazhdoe obnovlenie esli ono veliko razrabotchik vynuzhden ogranichivat chastotu obnovlenij chtoby ne teryat vremya Modifikaciya proekta Razrabotchik modificiruet proekt izmenyaya vhodyashie v nego fajly v rabochej kopii v sootvetstvii s proektnym zadaniem Eta rabota proizvoditsya lokalno i ne trebuet obrashenij k serveru VCS Fiksaciya izmenenij Zavershiv ocherednoj etap raboty nad zadaniem razrabotchik fiksiruet commit svoi izmeneniya peredavaya ih na server libo v osnovnuyu vetv esli rabota nad zadaniem polnostyu zavershena libo v otdelnuyu vetv razrabotki dannogo zadaniya VCS mozhet trebovat ot razrabotchika pered fiksaciej obyazatelno vypolnit obnovlenie rabochej kopii Pri nalichii v sisteme podderzhki otlozhennyh izmenenij shelving izmeneniya mogut byt peredany na server bez fiksacii Esli utverzhdyonnaya politika raboty v VCS eto pozvolyaet to fiksaciya izmenenij mozhet provoditsya ne ezhednevno a tolko po zavershenii raboty nad zadaniem v etom sluchae do zaversheniya raboty vse svyazannye s zadaniem izmeneniya sohranyayutsya tolko v lokalnoj rabochej kopii razrabotchika Vetvleniya Delat melkie ispravleniya v proekte mozhno putyom neposredstvennoj pravki rabochej kopii i posleduyushej fiksacii izmenenij pryamo v glavnoj vetvi v stvole na servere Odnako pri vypolnenii obyomnyh rabot takoj poryadok stanovitsya neudobnym otsutstvie fiksacii promezhutochnyh izmenenij na servere ne pozvolyaet rabotat nad chem libo v gruppovom rezhime krome togo povyshaetsya risk poteri izmenenij pri lokalnyh avariyah i teryaetsya vozmozhnost analiza i vozvrata k predydushim variantam koda v predelah dannoj raboty Poetomu dlya takih izmenenij obychnoj praktikoj yavlyaetsya sozdanie vetvej branch to est otpochkovyvanie ot stvola v kakoj to versii novogo varianta proekta ili ego chasti razrabotka v kotorom vedyotsya parallelno s izmeneniyami v osnovnoj versii Vetv sozdayotsya specialnoj komandoj Rabochaya kopiya vetvi mozhet byt sozdana zanovo obychnym obrazom komandoj izvlecheniya rabochej kopii s ukazaniem adresa ili identifikatora vetvi libo putyom pereklyucheniya imeyushejsya rabochej kopii na zadannuyu vetv Bazovyj rabochij cikl pri ispolzovanii vetvej ostayotsya tochno takim zhe kak i v obshem sluchae razrabotchik periodicheski obnovlyaet rabochuyu kopiyu esli s vetvyu rabotaet bolee odnogo cheloveka i fiksiruet v nej svoyu ezhednevnuyu rabotu Inogda vetv razrabotki tak i ostayotsya samostoyatelnoj kogda izmeneniya porozhdayut novyj variant proekta kotoryj dalee razvivaetsya otdelno ot osnovnogo no chashe vsego kogda rabota dlya kotoroj sozdana vetv vypolnena vetv reintegriruetsya v stvol osnovnuyu vetv Eto mozhet delatsya komandoj sliyaniya obychno merge libo putyom sozdaniya patcha patch soderzhashego vnesyonnye v hode razrabotki vetvi izmeneniya i primeneniya etogo patcha k tekushej osnovnoj versii proekta Sliyanie versij Tri vida operacij vypolnyaemyh v sisteme upravleniya versiyami mogut privodit k neobhodimosti obedineniya izmenenij Eto Obnovlenie rabochej kopii izmeneniya sdelannye v osnovnoj versii slivayutsya s lokalnymi Fiksaciya izmenenij lokalnye izmeneniya slivayutsya s izmeneniyami uzhe zafiksirovannymi v osnovnoj versii Sliyanie vetvej izmeneniya sdelannye v odnoj vetvi razrabotki slivayutsya s izmeneniyami sdelannymi v drugoj Vo vseh sluchayah situaciya principialno odinakova i imeet sleduyushie harakternye cherty Ranee byla sdelana kopiya dereva fajlov i katalogov repozitoriya ili ego chasti Vposledstvii i v originalnoe derevo i v kopiyu byli nezavisimo vneseny nekotorye izmeneniya Trebuetsya obedinit izmeneniya v originale i kopii takim obrazom chtoby ne narushit logicheskuyu svyaznost proekta i ne poteryat dannye Sovershenno ochevidno chto pri nevypolnenii usloviya 2 to est esli izmeneniya byli vneseny tolko v original ili tolko v kopiyu obedinenie elementarno dostatochno skopirovat izmenyonnuyu chast tuda gde izmenenij ne bylo V protivnom sluchae sliyanie izmenenij prevrashaetsya v netrivialnuyu zadachu vo mnogih sluchayah trebuyushuyu vmeshatelstva razrabotchika V celom mehanizm avtomaticheskogo sliyaniya izmenenij rabotaet osnovyvayas na sleduyushih principah Izmeneniya mogut sostoyat v modifikacii soderzhimogo fajla sozdanii novogo fajla ili kataloga udalenii ili pereimenovanii ranee sushestvovavshego fajla ili kataloga v proekte Esli dva izmeneniya otnosyatsya k raznym i ne svyazannym mezhdu soboj fajlam i ili katalogam oni vsegda mogut byt obedineny avtomaticheski Ih obedinenie sostoit v tom chto izmeneniya sdelannye v kazhdoj versii proekta kopiruyutsya v obedinyaemuyu versiyu Sozdanie udalenie i pereimenovanie fajlov v katalogah proekta mogut byt obedineny avtomaticheski esli tolko oni ne konfliktuyut mezhdu soboj V etom sluchae izmeneniya sdelannye v kazhdoj versii proekta kopiruyutsya v obedinyaemuyu versiyu Konfliktuyushimi obychno yavlyayutsya Udalenie i izmenenie odnogo i togo zhe fajla ili kataloga Udalenie i pereimenovanie odnogo i togo zhe fajla ili kataloga v sluchae esli sistema podderzhivaet operaciyu pereimenovaniya Sozdanie v raznyh versiyah fajla s odnim i tem zhe imenem i raznym soderzhimym Izmeneniya v predelah odnogo tekstovogo fajla sdelannye v raznyh versiyah mogut byt obedineny esli oni nahodyatsya v raznyh mestah etogo fajla i ne peresekayutsya V etom sluchae v obedinyonnuyu versiyu vnosyatsya vse sdelannye izmeneniya Izmeneniya v predelah odnogo fajla esli on ne yavlyaetsya tekstovym vsegda yavlyayutsya konfliktuyushimi i ne mogut byt obedineny avtomaticheski Vo vseh sluchayah bazovoj versiej dlya sliyaniya yavlyaetsya versiya v kotoroj bylo proizvedeno razdelenie slivaemyh versij Esli eto operaciya fiksacii izmenenij to bazovoj versiej budet versiya poslednego obnovleniya pered fiksaciej esli obnovlenie to versiya predydushego obnovleniya esli sliyanie vetvej to versiya v kotoroj byla sozdana sootvetstvuyushaya vetv Sootvetstvenno sopostavlyaemymi naborami izmenenij budut nabory izmenenij sdelannyh ot bazovoj do tekushej versii vo vseh obedinyaemyh variantah Absolyutnoe bolshinstvo sovremennyh sistem upravleniya versiyami orientirovano v pervuyu ochered na proekty razrabotki programmnogo obespecheniya v kotoryh osnovnym vidom soderzhimogo fajla yavlyaetsya tekst Sootvetstvenno mehanizmy avtomaticheskogo sliyaniya izmenenij orientiruyutsya na obrabotku tekstovyh fajlov to est fajlov soderzhashih tekst sostoyashij iz strok bukvenno cifrovyh simvolov probelov i tabulyacij razdelyonnyh simvolami perevoda stroki Pri opredelenii dopustimosti sliyaniya izmenenij v predelah odnogo i togo zhe tekstovogo fajla rabotaet tipovoj mehanizm postrochnogo sravneniya tekstov primerom ego realizacii yavlyaetsya sistemnaya utilita GNU diff kotoryj sravnivaet obedinyaemye versii s bazovoj i stroit spisok izmenenij to est dobavlennyh udalyonnyh i zamenyonnyh naborov strok Minimalnoj edinicej dannyh dlya etogo algoritma yavlyaetsya stroka dazhe samoe maloe otlichie delaet stroki razlichnymi S uchyotom togo chto simvoly razdeliteli v bolshinstve sluchaev ne nesut smyslovoj nagruzki mehanizm sliyaniya mozhet ignorirovat eti simvoly pri sravnenii strok Te najdennye nabory izmenyonnyh strok kotorye ne peresekayutsya mezhdu soboj schitayutsya sovmestimymi i ih sliyanie delaetsya avtomaticheski Esli v slivaemyh fajlah nahodyatsya izmeneniya zatragivayushie odnu i tu zhe stroku fajla eto privodit k konfliktu Takie fajly mogut byt obedineny tolko vruchnuyu Lyubye fajly krome tekstovyh s tochki zreniya VCS yavlyayutsya binarnymi i ne dopuskayut avtomaticheskogo sliyaniya Konflikty i ih razreshenie Situaciyu kogda pri sliyanii neskolkih versij sdelannye v nih izmeneniya peresekayutsya mezhdu soboj nazyvayut konfliktom Pri konflikte izmenenij sistema upravleniya versiyami ne mozhet avtomaticheski sozdat obedinyonnyj proekt i vynuzhdena obrashatsya k razrabotchiku Kak uzhe govorilos vyshe konflikty mogut voznikat na etapah fiksacii izmenenij obnovleniya ili sliyaniya vetvej Vo vseh sluchayah pri obnaruzhenii konflikta sootvetstvuyushaya operaciya prekrashaetsya do ego razresheniya Dlya razresheniya konflikta sistema v obshem sluchae predlagaet razrabotchiku tri varianta konfliktuyushih fajlov bazovyj lokalnyj i servernyj Konfliktuyushie izmeneniya libo pokazyvayutsya razrabotchiku v specialnom programmnom module obedineniya izmenenij v etom sluchae tam demonstriruyutsya slivaemye varianty i dinamicheski izmenyayushijsya v zavisimosti ot komand polzovatelya obedinyonnyj variant fajla libo prosto pomechayutsya specialnoj razmetkoj pryamo v tekste obedinyonnogo fajla togda razrabotchik dolzhen sam sformirovat zhelaemyj tekst v spornyh mestah i sohranit ego Konflikty v fajlovoj sisteme razreshayutsya proshe tam mozhet konfliktovat tolko udalenie fajla s odnoj iz prochih operacij a poryadok fajlov v kataloge ne imeet znacheniya tak chto razrabotchiku ostayotsya lish vybrat kakuyu operaciyu nuzhno sohranit v slivaemoj versii Blokirovki Mehanizm blokirovki pozvolyaet odnomu iz razrabotchikov zahvatit v monopolnoe ispolzovanie fajl ili gruppu fajlov dlya vneseniya v nih izmenenij Na to vremya poka fajl zablokirovan on ostayotsya dostupnym vsem ostalnym razrabotchikam tolko na chtenie i lyubaya popytka vnesti v nego izmeneniya otvergaetsya serverom Tehnicheski blokirovka mozhet byt organizovana po raznomu Tipichnym dlya sovremennyh sistem yavlyaetsya sleduyushij mehanizm Fajly dlya raboty s kotorymi trebuetsya blokirovka pomechayutsya specialnym flagom blokiruemyj Takaya pometka mozhet stavitsya avtomaticheski pri dobavlenii fajla v proekt obychno dlya etogo predvaritelno sozdayotsya spisok masok imyon fajlov kotorye pri dobavlenii dolzhny stanovitsya blokiruemymi Esli fajl pomechen kak blokiruemyj to pri izvlechenii rabochej kopii s servera on poluchaet v lokalnoj fajlovoj sisteme atribut tolko dlya chteniya chto prepyatstvuet ego sluchajnomu redaktirovaniyu Razrabotchik zhelayushij izmenit fajl vyzyvaet specialnuyu komandu blokirovki lock s ukazaniem imeni etogo fajla V rezultate raboty etoj komandy proishodit sleduyushee server proveryaet ne zablokirovan li uzhe fajl drugim razrabotchikom esli eto tak to komanda blokirovki zavershaetsya s oshibkoj fajl zablokirovan drugim polzovatelem i razrabotchik vyzyvavshij eyo dolzhen ozhidat poka drugoj polzovatel ne snimet svoyu blokirovku fajl na servere pomechaetsya kak zablokirovannyj s sohraneniem identifikatora zablokirovavshego ego razrabotchika i vremeni blokirovki esli blokirovka na servere proshla udachno na lokalnoj fajlovoj sisteme s fajla rabochej kopii snimaetsya atribut tolko dlya chteniya chto pozvolyaet nachat ego redaktirovat Razrabotchik rabotaet s zablokirovannym fajlom Esli v processe raboty vyyasnyaetsya chto fajl izmenyat ne nuzhno on mozhet vyzvat komandu snyatiya blokirovki unlock release lock Vse izmeneniya fajla budut otmeneny lokalnyj fajl vernyotsya v sostoyanie tolko dlya chteniya s fajla na servere budet snyat atribut zablokirovan i drugie razrabotchiki poluchat vozmozhnost izmenyat etot fajl Po zavershenii raboty s blokiruemym fajlom razrabotchik fiksiruet izmeneniya Obychno blokirovka pri etom snimaetsya avtomaticheski hotya v nekotoryh sistemah blokirovku trebuetsya snimat vruchnuyu posle fiksacii libo ukazyvat v komande fiksacii izmenenij sootvetstvuyushij parametr Tak ili inache pri etom fajl posle izmenenij teryaet flag zablokirovan i mozhet byt izmenyon drugimi razrabotchikami Massovoe ispolzovanie blokirovok kogda vse ili bolshinstvo fajlov v proekte yavlyayutsya blokiruemymi i dlya lyubyh izmenenij neobhodimo zablokirovat sootvetstvuyushij nabor fajlov nazyvaetsya eshyo strategiej blokirovannogo izvlecheniya Rannie sistemy upravleniya versiyami podderzhivali isklyuchitelno etu strategiyu predotvrashaya takim sposobom poyavlenie konfliktov na kornyu V sovremennyh VCS predpochtitelnym yavlyaetsya ispolzovanie neblokiruyushih izvlechenij blokirovki zhe schitayutsya skoree neizbezhnym zlom kotoroe nuzhno po vozmozhnosti ogranichivat Nedostatki ispolzovaniya blokirovok ochevidny Blokirovki prosto meshayut produktivnoj rabote poskolku vynuzhdayut ozhidat osvobozhdeniya blokirovannyh fajlov hotya v bolshinstve sluchaev dazhe sovmestnye izmeneniya odnih i teh zhe fajlov kotorye delayutsya v hode raznyh po smyslu rabot ne peresekayutsya i obedinyayutsya pri sliyanii avtomaticheski Chastota vozniknoveniya konfliktov i slozhnost ih razresheniya v bolshinstve sluchaev ne nastolko veliki chtoby sozdat seryoznye zatrudneniya Vozniknovenie zhe seryoznogo konflikta izmenenij chashe vsego signaliziruet libo o sushestvennom rashozhdenii vo mneniyah raznyh razrabotchikov otnositelno dizajna odnogo i togo zhe fragmenta libo o nepravilnoj organizacii raboty kogda dva ili bolee razrabotchikov delayut odno i to zhe Blokirovki sozdayut administrativnye problemy Tipichnyj primer razrabotchik mozhet zabyt snyat blokirovku s zanyatyh im fajlov uhodya v otpusk Dlya razresheniya podobnyh problem prihoditsya primenyat administrativnye mery v tom chisle vklyuchat v sistemu tehnicheskie sredstva dlya sbrosa nevernyh blokirovok no i pri ih nalichii na privedenie sistemy v poryadok rashoduetsya vremya S drugoj storony v nekotoryh sluchayah ispolzovanie blokirovok vpolne opravdanno Ochevidnym primerom yavlyaetsya organizaciya raboty s binarnymi fajlami dlya kotoryh net instrumentalnyh sredstv sliyaniya izmenenij libo takoe sliyanie principialno nevozmozhno kak naprimer dlya fajlov izobrazhenij Esli avtomaticheskoe sliyanie nevozmozhno to pri obychnom poryadke raboty lyuboe parallelnoe izmenenie podobnyh fajlov budet privodit k konfliktu V dannom sluchae gorazdo udobnee sdelat takoj fajl blokiruemym chtoby garantirovat chto lyubye izmeneniya v nego budut vnositsya tolko posledovatelno Versii proekta tegi Sistema upravleniya versiyami obespechivaet hranenie vseh sushestvovavshih variantov fajlov i kak sledstvie vseh variantov proekta v celom imevshih mesto s momenta nachala ego razrabotki No samo ponyatie versii v raznyh sistemah mozhet traktovatsya dvoyako Odni sistemy podderzhivayut versionnost fajlov Eto oznachaet chto lyuboj fajl poyavlyayushijsya v proekte poluchaet sobstvennyj nomer versii obychno nomer 1 uslovnoj nulevoj versiej fajla schitaetsya pustoj fajl s tem zhe imenem Pri kazhdoj fiksacii razrabotchikom izmenenij zatragivayushih fajl sootvetstvuyushaya chast fiksiruemyh izmenenij primenyaetsya k fajlu i fajl poluchaet novyj obychno sleduyushij po poryadku nomer versii Poskolku fiksacii obychno zatragivayut tolko chast fajlov v repozitorii nomera versij fajlov imeyushiesya na odin i tot zhe moment vremeni so vremenem rashodyatsya i proekt v celom to est ves nabor fajlov repozitoriya fakticheski nikakogo nomera versii ne imeet poskolku sostoit iz mnozhestva fajlov s razlichnymi nomerami versij Podobnym obrazom rabotaet naprimer sistema upravleniya versiyami CVS Dlya drugih sistem ponyatie versiya otnositsya ne k otdelnomu fajlu a k repozitoriyu celikom Vnov sozdannyj pustoj repozitorij imeet versiyu 1 ili 0 lyubaya fiksaciya izmenenij privodit k uvelicheniyu etogo nomera to est dazhe pri izmenenii odnogo fajla na odin bajt ves repozitorij schitaetsya izmenyonnym i poluchaet novyj nomer versii Takim sposobom traktuet nomera versij naprimer sistema Subversion Nomera versii otdelnogo fajla zdes fakticheski ne sushestvuet uslovno mozhno schitat takovym tekushij nomer versii repozitoriya to est schitat chto pri kazhdom izmenenii vnesyonnom v repozitorij vse ego fajly menyayut nomer versii dazhe te kotorye ne menyalis Inogda govorya o versii fajla v takih sistemah imeyut v vidu tu versiyu repozitoriya v kotoroj fajl byl poslednij raz do interesuyushego nas momenta izmenyon Dlya prakticheskih celej obychno imeet znachenie ne otdelnyj fajl a ves proekt celikom V sistemah podderzhivayushih versionnost otdelnyh fajlov dlya identifikacii opredelyonnoj versii proekta mozhno ispolzovat datu i vremya togda versiya proekta budet sostoyat iz teh versij vhodyashih v nego fajlov kotorye imelis v repozitorii na ukazannyj moment vremeni Esli podderzhivaetsya versionnost repozitoriya v celom nomerom versii proekta mozhet vystupat nomer versii repozitoriya Odnako oba varianta ne slishkom udobny tak kak ni data ni nomer versii repozitoriya obychno ne nesut informacii o znachimyh izmeneniyah v proekte o tom naskolko dolgo i intensivno nad nim rabotali Dlya bolee udobnoj pometki versij proekta ili ego chastej sistemy upravleniya versiyami podderzhivayut ponyatie tegov Teg tag eto simvolicheskaya metka kotoraya mozhet byt svyazana s opredelyonnoj versiej fajla i ili kataloga v repozitorii S pomoshyu sootvetstvuyushej komandy vsem ili chasti fajlov proekta otvechayushim opredelyonnym usloviyam naprimer vhodyashim v golovnuyu versiyu glavnoj vetvi proekta na opredelyonnyj moment vremeni mozhet byt prisvoena zadannaya metka Takim obrazom mozhno identificirovat versiyu proekta versiya XX XXX XXX eto nabor versij fajlov repozitoriya imeyushih teg XX XXX XXX zafiksirovav takim obrazom ego sostoyanie na nekotoryj zhelaemyj moment Kak pravilo sistema tegov dostatochno gibkaya i pozvolyaet pometit odnim tegom i ne odnovremennye versii fajlov i katalogov Eto pozvolyaet sobrat versiyu proekta lyubym proizvolnym obrazom S tochki zreniya polzovatelya sistemy pometka tegami mozhet vyglyadet po raznomu V nekotoryh sistemah ona izobrazhaetsya imenno kak pometka teg mozhno sozdat primenit k opredelyonnym versiyam fajlov i katalogov snyat V drugih sistemah naprimer Subversion teg predstavlyaet soboj prosto otdelnyj katalog na fajlovom dereve repozitoriya kuda iz stvola i vetvej proekta s pomoshyu komandy kopirovaniya delayutsya kopii nuzhnyh versij fajlov Tak chto vizualno teg eto prosto vynesennaya v otdelnyj katalog kopiya opredelyonnyh versij fajlov repozitoriya Po soglasheniyu v derevo katalogov sootvetstvuyushee tegu zapreshena fiksaciya izmenenij to est versiya proekta predstavlyaemaya tegom yavlyaetsya neizmennoj Bazovye principy razrabotki PO v VCS Poryadok ispolzovaniya sistemy upravleniya versiyami v kazhdom konkretnom sluchae opredelyaetsya tehnicheskimi reglamentami i pravilami prinyatymi v konkretnoj firme ili organizacii razrabatyvayushej proekt Tem ne menee obshie principy pravilnogo ispolzovaniya VCS nemnogochislenny i ediny dlya lyubyh razrabotok i sistem upravleniya versiyami Lyubye rabochie testovye ili demonstracionnye versii proekta sobirayutsya tolko iz repozitoriya sistemy Personalnye sborki vklyuchayushie eshyo nezafiksirovannye izmeneniya mogut delat tolko razrabotchiki dlya celej promezhutochnogo testirovaniya Takim obrazom garantiruetsya chto repozitorij soderzhit vsyo neobhodimoe dlya sozdaniya rabochej versii proekta Tekushaya versiya glavnoj vetvi vsegda korrektna Ne dopuskaetsya fiksaciya v glavnoj vetvi nepolnyh ili ne proshedshih hotya by predvaritelnoe testirovanie izmenenij V lyuboj moment sborka proekta provedyonnaya iz tekushej versii dolzhna byt uspeshnoj Lyuboe znachimoe izmenenie dolzhno oformlyatsya kak otdelnaya vetv Promezhutochnye rezultaty raboty razrabotchika fiksiruyutsya v etu vetv Posle zaversheniya raboty nad izmeneniem vetv obedinyaetsya so stvolom Isklyucheniya dopuskayutsya tolko dlya melkih izmenenij rabota nad kotorymi vedyotsya odnim razrabotchikom v techenie ne bolee chem odnogo rabochego dnya Versii proekta pomechayutsya tegami Vydelennaya i pomechennaya tegom versiya bolee nikogda ne izmenyaetsya Raspredelyonnye sistemy upravleniya versiyamiTakzhe izvestny kak Distributed Version Control System DVCS Takie sistemy ispolzuyut raspredelyonnuyu model vmesto tradicionnoj klient servernoj Oni v obshem sluchae ne nuzhdayutsya v centralizovannom hranilishe vsya istoriya izmeneniya dokumentov hranitsya na kazhdom kompyutere v lokalnom hranilishe i pri neobhodimosti otdelnye fragmenty istorii lokalnogo hranilisha sinhroniziruyutsya s analogichnym hranilishem na drugom kompyutere V nekotoryh takih sistemah lokalnoe hranilishe raspolagaetsya neposredstvenno v katalogah rabochej kopii Kogda polzovatel takoj sistemy vypolnyaet obychnye dejstviya takie kak izvlechenie opredelyonnoj versii dokumenta sozdanie novoj versii i tomu podobnoe on rabotaet so svoej lokalnoj kopiej hranilisha Po mere vneseniya izmenenij hranilisha prinadlezhashie raznym razrabotchikam nachinayut razlichatsya i voznikaet neobhodimost v ih sinhronizacii Takaya sinhronizaciya mozhet osushestvlyatsya s pomoshyu obmena patchami ili tak nazyvaemymi naborami izmenenij angl change sets mezhdu polzovatelyami Opisannaya model logicheski blizka sozdaniyu otdelnoj vetki dlya kazhdogo razrabotchika v klassicheskoj sisteme upravleniya versiyami v nekotoryh raspredelyonnyh sistemah pered nachalom raboty s lokalnym hranilishem nuzhno sozdat novuyu vetv Otlichie sostoit v tom chto do momenta sinhronizacii drugie razrabotchiki etoj vetvi ne vidyat Poka razrabotchik izmenyaet tolko svoyu vetv ego rabota ne vliyaet na drugih uchastnikov proekta i naoborot Po zavershenii obosoblennoj chasti raboty vnesyonnye v vetvi izmeneniya slivayut s osnovnoj obshej vetvyu Kak pri sliyanii vetvej tak i pri sinhronizacii raznyh hranilish vozmozhny konflikty versij Na etot sluchaj vo vseh sistemah predusmotreny te ili inye metody obnaruzheniya i razresheniya konfliktov sliyaniya S tochki zreniya polzovatelya raspredelyonnaya sistema otlichaetsya neobhodimostyu sozdavat lokalnyj repozitorij i nalichiem v komandnom yazyke dvuh dopolnitelnyh komand komandy polucheniya repozitoriya ot udalyonnogo kompyutera pull i peredachi svoego repozitoriya na udalyonnyj kompyuter push Pervaya komanda vypolnyaet sliyanie izmenenij udalyonnogo i lokalnogo repozitoriev s pomesheniem rezultata v lokalnyj repozitorij vtoraya naoborot vypolnyaet sliyanie izmenenij dvuh repozitoriev s pomesheniem rezultata v udalyonnyj repozitorij Kak pravilo komandy sliyaniya v raspredelyonnyh sistemah pozvolyayut vybrat kakie nabory izmenenij budut peredavatsya v drugoj repozitorij ili izvlekatsya iz nego ispravlyat konflikty sliyaniya neposredstvenno v hode operacii ili posle eyo neudachnogo zaversheniya povtoryat ili vozobnovlyat neokonchennoe sliyanie Obychno peredacha svoih izmenenij v chuzhoj repozitorij push zavershaetsya udachno tolko pri uslovii otsutstviya konfliktov Esli konflikty voznikayut polzovatel dolzhen snachala slit versii v svoyom repozitorii vypolnit pull i lish zatem peredavat ih drugim Obychno rekomenduetsya organizovyvat rabotu s sistemoj tak chtoby polzovateli vsegda ili preimushestvenno vypolnyali sliyanie u sebya v repozitorii To est v otlichie ot centralizovannyh sistem gde polzovateli peredayut svoi izmeneniya na centralnyj server kogda schitayut nuzhnym v raspredelyonnyh sistemah bolee estestvennym yavlyaetsya poryadok kogda sliyanie versij iniciiruet tot komu nuzhno poluchit ego rezultat naprimer razrabotchik upravlyayushij sborochnym serverom Osnovnye preimushestva raspredelyonnyh sistem ih gibkost i znachitelno bo lshaya po sravneniyu s centralizovannymi sistemami avtonomiya otdelnogo rabochego mesta Kazhdyj kompyuter razrabotchika yavlyaetsya fakticheski samostoyatelnym i polnofunkcionalnym serverom iz takih kompyuterov mozhno postroit proizvolnuyu po strukture i urovnyu slozhnosti sistemu zadav kak tehnicheskimi tak i administrativnymi merami zhelaemyj poryadok sinhronizacii Pri etom kazhdyj razrabotchik mozhet vesti rabotu nezavisimo tak kak emu udobno izmenyaya i sohranyaya promezhutochnye versii dokumentov polzuyas vsemi vozmozhnostyami sistemy v tom chisle dostupom k istorii izmenenij dazhe v otsutstvie setevogo soedineniya s serverom Svyaz s serverom ili drugimi razrabotchikami trebuetsya isklyuchitelno dlya provedeniya sinhronizacii pri etom obmen naborami izmenenij mozhet osushestvlyatsya po razlichnym shemam K nedostatkam raspredelyonnyh sistem mozhno otnesti uvelichenie trebuemogo obyoma diskovoj pamyati na kazhdom kompyutere prihoditsya hranit polnuyu istoriyu versij togda kak v centralizovannoj sisteme na kompyutere razrabotchika obychno hranitsya lish rabochaya kopiya to est srez repozitoriya na kakoj to moment vremeni i vnesyonnye izmeneniya Menee ochevidnym no nepriyatnym nedostatkom yavlyaetsya to chto v raspredelyonnoj sisteme prakticheski nevozmozhno realizovat nekotorye vidy funkcionalnosti predostavlyaemye centralizovannymi sistemami Eto Blokirovka fajla ili gruppy fajlov dlya hraneniya priznaka blokirovki nuzhen obshedostupnyj i postoyanno nahodyashijsya v onlajne centralnyj server Eto vynuzhdaet primenyat specialnye administrativnye mery esli prihoditsya rabotat s binarnymi fajlami neprigodnymi dlya avtomaticheskogo sliyaniya Slezhenie za opredelyonnym fajlom ili gruppoj fajlov izmeneniya fajlov proishodyat na raznyh serverah sliyaniya i vydeleniya vetvej proishodyat lokalno ob izmeneniyah stanovitsya izvestno tolko pri sinhronizacii prichyom ne vsem razrabotchikam a tolko tem kto v dannoj sinhronizacii uchastvuet Edinaya skvoznaya numeraciya versij sistemy i ili fajlov v kotoroj nomer versii monotonno vozrastaet takaya numeraciya takzhe trebuet nalichiya glavnogo servera zadayushego nomera versij dlya vseh ostalnyh V raspredelyonnyh sistemah prihoditsya obhoditsya lokalnymi oboznacheniyami versij i primenyat tegi naznachenie kotoryh opredelyaetsya soglasheniem mezhdu razrabotchikami ili korporativnymi standartami firmy Lokalnaya rabota polzovatelya s otdelnoj nebolshoj po obyomu vyborkoj iz znachitelnogo po razmeru i vnutrennej slozhnosti hranilisha na udalyonnom servere Mozhno vydelit sleduyushie tipichnye situacii v kotoryh ispolzovanie raspredelyonnoj sistemy dayot zametnye preimushestva Periodicheskaya sinhronizaciya neskolkih kompyuterov pod upravleniem odnogo razrabotchika rabochego kompyutera domashnego kompyutera noutbuka i tak dalee Ispolzovanie raspredelyonnoj sistemy izbavlyaet ot neobhodimosti vydelyat odin iz kompyuterov v kachestve servera a sinhronizaciya vypolnyaetsya po neobhodimosti obychno pri peresadke razrabotchika s odnogo ustrojstva na drugoe Sovmestnaya rabota nad proektom nebolshoj territorialno raspredelyonnoj gruppy razrabotchikov bez vydeleniya obshih resursov Kak i v predydushem sluchae realizuetsya shema raboty bez glavnogo servera a aktualnost repozitoriev podderzhivaetsya periodicheskimi sinhronizaciyami po sheme kazhdyj s kazhdym Krupnyj raspredelyonnyj proekt uchastniki kotorogo mogut dolgoe vremya rabotat kazhdyj nad svoej chastyu pri etom ne imeyut postoyannogo podklyucheniya k seti Takoj proekt mozhet ispolzovat centralizovannyj server s kotorym sinhroniziruyutsya kopii vseh ego uchastnikov Vozmozhny i bolee slozhnye varianty naprimer s sozdaniem grupp dlya raboty po otdelnym napravleniyam vnutri bolee krupnogo proekta Pri etom mogut byt vydeleny otdelnye gruppovye servery dlya sinhronizacii raboty grupp togda process okonchatelnogo sliyaniya izmeneniya stanovitsya drevovidnym snachala otdelnye razrabotchiki sinhroniziruyut izmeneniya na gruppovyh serverah zatem obnovlyonnye repozitorii grupp sinhroniziruyutsya s glavnym serverom Vozmozhna rabota i bez gruppovyh serverov togda razrabotchiki odnoj gruppy sinhroniziruyut izmeneniya mezhdu soboj posle chego lyuboj iz nih naprimer rukovoditel gruppy peredayot izmeneniya na centralnyj server V tradicionnoj ofisnoj razrabotke proektov kogda gruppa razrabotchikov otnositelno nevelika i celikom nahoditsya na odnoj territorii v predelah edinoj lokalnoj kompyuternoj seti s postoyanno dostupnymi serverami centralizovannaya sistema mozhet okazatsya luchshim vyborom iz za svoej bolee zhyostkoj struktury i nalichiya funkcionalnosti otsutstvuyushej v raspredelyonnyh sistemah naprimer uzhe upomyanutoj blokirovki Vozmozhnost fiksirovat izmeneniya bez ih sliyaniya v centralnuyu vetv v takih usloviyah legko realizuetsya putyom vydeleniya nezavershyonnyh rabot v otdelnye vetvi razrabotki SlovarObsheprinyatoj terminologii ne sushestvuet v raznyh sistemah mogut ispolzovatsya razlichnye nazvaniya dlya odnih i teh zhe dejstvij Nizhe privodyatsya nekotorye iz naibolee chasto ispolzuemyh variantov Privedeny anglijskie terminy v literature na russkom yazyke ispolzuetsya tot ili inoj perevod ili transliteraciya amend Vnesti izmeneniya ne sozdavaya novoj versii obychno kogda razrabotchik oshibochno zafiksiroval commit versiyu no ne zalil push eyo na server bisect Dvoichnym poiskom ponyat kogda oshibka poyavilas ili naoborot perestala vosproizvoditsya blame Ponyat kto vnyos izmenenie branch Vetv napravlenie razrabotki nezavisimoe ot drugih Vetv predstavlyaet soboj kopiyu chasti kak pravilo odnogo kataloga hranilisha v kotoruyu mozhno vnosit svoi izmeneniya ne vliyayushie na drugie vetvi Dokumenty v raznyh vetvyah imeyut odinakovuyu istoriyu do tochki vetvleniya i raznye posle neyo changeset changelist activity Nabor izmenenij Predstavlyaet soboj poimenovannyj nabor pravok sdelannyh v lokalnoj kopii dlya kakoj to obshej celi V sistemah podderzhivayushih nabory pravok razrabotchik mozhet obedinyat lokalnye pravki v gruppy i vypolnyat fiksaciyu logicheski svyazannyh izmenenij odnoj komandoj ukazyvaya trebuemyj nabor pravok v kachestve parametra Pri etom prochie pravki ostanutsya nezafiksirovannymi Tipichnyj primer vedyotsya rabota nad dobavleniem novoj funkcionalnosti a v etot moment obnaruzhivaetsya kriticheskaya oshibka kotoruyu neobhodimo nemedlenno ispravit Razrabotchik sozdayot nabor izmenenij dlya uzhe sdelannoj raboty i novyj dlya ispravlenij Po zavershenii ispravleniya oshibki otdayotsya komanda fiksacii tolko vtorogo nabora pravok check in commit submit Sozdanie novoj versii fiksaciya izmenenij V nekotoryh SUV Subversion novaya versiya avtomaticheski perenositsya v hranilishe dokumentov check out clone Izvlechenie dokumenta iz hranilisha i sozdanie rabochej kopii conflict Konflikt situaciya kogda neskolko polzovatelej sdelali izmeneniya odnogo i togo zhe uchastka dokumenta Konflikt obnaruzhivaetsya kogda odin polzovatel zafiksiroval svoi izmeneniya a vtoroj pytaetsya zafiksirovat i sistema sama ne mozhet korrektno slit konfliktuyushie izmeneniya Poskolku programma mozhet byt nedostatochno razumna dlya togo chtoby opredelit kakoe izmenenie yavlyaetsya korrektnym vtoromu polzovatelyu nuzhno samomu razreshit konflikt resolve graft backport cherry pick transplant Ispolzovat vstroennyj v SUV algoritm sliyaniya chtoby perenesti otdelnye izmeneniya v druguyu vetv ne slivaya ih Naprimer ispravili oshibku v eksperimentalnoj vetvi vnosim eti zhe izmeneniya v stabilnyj stvol head trunk Osnovnaya versiya samaya svezhaya versiya dlya vetvi stvola nahodyashayasya v hranilishe Skolko vetvej stolko osnovnyh versij merge integration Sliyanie obedinenie nezavisimyh izmenenij v edinuyu versiyu dokumenta Osushestvlyaetsya kogda dva cheloveka izmenili odin i tot zhe fajl ili pri perenose izmenenij iz odnoj vetki v druguyu pull update Poluchit novye versii iz hranilisha V nekotoryh SUV Subversion proishodit i pull i switch to est zagruzhayutsya izmeneniya a potom rabochaya kopiya dovoditsya do poslednego sostoyaniya Budte vnimatelny ponyatie update dvusmyslenno i v Subversion i Mercurial znachit raznoe push Zalit novye versii v hranilishe Mnogie raspredelyonnye SUV Git Mercurial predpolagayut chto commit nado davat kazhdyj raz kogda programmist vypolnil kakuyu to zakonchennuyu funkciyu A zalit kogda est internet i drugie hotyat vashi izmeneniya Commit obychno ne trebuet vvoda imeni i parolya a push trebuet rebase Ispolzovat vstroennyj v SUV algoritm sliyaniya chtoby perenesti tochku vetvleniya versiyu ot kotoroj nachinaetsya vetv na bolee pozdnyuyu versiyu stvola Chashe vsego primenyaetsya v takom scenarii Boris vnyos izmeneniya i obnaruzhivaet chto ne mozhet zalit push ih poskolku Anna ranee izmenila sovershenno drugoe mesto koda Mozhno prosto slit ih merge No derevo budet linejnym i bolee chitabelnym esli otkazatsya ot svoej redakcii no vnesti te zhe izmeneniya v redakciyu Anny eto i est rebase Esli Anna i Boris rabotayut nad odnim i tem zhe mestom koda meshaya drug drugu i razreshaya konflikty vruchnuyu rebase ne rekomenduetsya repository depot Hranilishe dokumentov mesto gde sistema upravleniya versiyami hranit vse dokumenty vmeste s istoriej ih izmeneniya i drugoj sluzhebnoj informaciej revision Versiya dokumenta Sistemy upravleniya versiyami razlichayut versii po nomeram kotorye naznachayutsya avtomaticheski shelve stash Otkladyvanie izmenenij Predostavlyaemaya nekotorymi sistemami vozmozhnost sozdat nabor izmenenij changeset i sohranit ego na servere bez fiksacii commit a Otlozhennyj nabor izmenenij dostupen na chtenie drugim uchastnikam proekta no do specialnoj komandy ne vhodit v osnovnuyu vetv Podderzhka otkladyvaniya izmenenij dayot vozmozhnost polzovatelyam sohranyat nezavershyonnye raboty na servere ne sozdavaya dlya etogo otdelnyh vetvej squash Rezhim graft cherry pick dlya celoj vetvi Drugimi slovami vsya vetv vnositsya kak odno izmenenie Udobno dlya dostatochno bolshih izmenenij chtoby tratit na nih neskolko dnej i dostatochno malenkih chtoby ne hranit po nim vsyu istoriyu stage Vybrat kakie izmeneniya vnosit commit a kakie ostavit lichnymi ili vnesti pozzhe strip Udalit celuyu vetv iz hranilisha tag label Metka kotoruyu mozhno prisvoit opredelyonnoj versii dokumenta Metka predstavlyaet soboj simvolicheskoe imya dlya gruppy dokumentov prichyom metka opisyvaet ne tolko nabor imyon fajlov no i versiyu kazhdogo fajla Versii vklyuchyonnyh v metku dokumentov mogut prinadlezhat raznym momentam vremeni trunk mainline master Stvol osnovnaya vetv razrabotki proekta Politika raboty so stvolom mozhet otlichatsya ot proekta k proektu no v celom ona takova bolshinstvo izmenenij vnositsya v stvol esli trebuetsya seryoznoe izmenenie sposobnoe privesti k nestabilnosti sozdayotsya vetv kotoraya slivaetsya so stvolom kogda novovvedenie budet v dostatochnoj mere ispytano pered vypuskom ocherednoj versii sozdayotsya vetv dlya posleduyushego vypuska v kotoruyu vnosyatsya tolko ispravleniya update sync switch Sinhronizaciya rabochej kopii do nekotorogo zadannogo sostoyaniya hranilisha Chashe vsego eto dejstvie oznachaet obnovlenie rabochej kopii do samogo svezhego sostoyaniya hranilisha Odnako pri neobhodimosti mozhno sinhronizirovat rabochuyu kopiyu i k bolee staromu sostoyaniyu chem tekushee working copy Rabochaya lokalnaya kopiya dokumentov Sm takzhe angl angl Konfiguracionnoe upravlenie Software Configuration Management Software Configuration Management Tools Programmnye produkty s prozrachnym upravleniem versiyami Nekotorye realizacii WebDAV DeltaV Operacionnaya sistema OpenVMS MediaWiki i bolshinstvo drugih viki dvizhkov PrimechaniyaGit O sisteme kontrolya versij neopr git scm com Data obrasheniya 7 avgusta 2021 3 avgusta 2021 goda Razumeetsya nikto ne mozhet pomeshat razrabotchiku snyat atribut tolko dlya chteniya s lokalnoj kopii fajla i izmenit ego no bolshinstvo sistem upravleniya versiyami v takoj situacii vydast pri popytke fiksacii izmenenij na servere oshibku tipa Fajl ne byl zablokirovan tekushim polzovatelem CVS Vybor mezhdu blokirovannymi i neblokirovannymi izvlecheniyami nedostupnaya ssylka SsylkiSistemy upravleniya versiyami dlya Linux Obzor arhitektury modelej i primerov Uroven slozhnosti prostoj rus developerWorks Distributed Version Control Systems A Not So Quick Guide Through angl Subversion or CVS Bazaar or Mercurial John Ferguson Smart JavaWorld com The Risks of Distributed Version Control Ben Kollinz Sassman sozdatel Subversion o raspredelyonnyh sistemah upravleniya versiyami angl sravnenie sistem upravleniya versiyami s tochki zreniya zavershyonnosti processa razrabotki PO Dlya uluchsheniya etoj stati zhelatelno Najti i oformit v vide snosok ssylki na nezavisimye avtoritetnye istochniki podtverzhdayushie napisannoe Posle ispravleniya problemy isklyuchite eyo iz spiska Udalite shablon esli ustraneny vse nedostatki
Вершина