Podvracení

podvracení
Typ centralizovaný systém správy verzí [d] , projekt Apache Foundation [d] aotevřeným zdrojovým kódem
Autor CollabNet [d]
Vývojář Apache Software Foundation
Zapsáno v C [4] [5] , Python [4] , C++ [6] [7] a Java [6] [7]
Operační systém GNU/Linux [8] , Microsoft Windows [8] , macOS [8] a BSD [8]
První vydání 20. října 2000 [1]
Nejnovější verze
Čitelné formáty souborů Formát výpisu SVN (v1) [d] , formát výpisu SVN (v2) [d] , formát výpisu SVN (v3) [d] a formát výpisu SVN (obecný) [d]
Vygenerované formáty souborů Formát výpisu SVN (v1) [d] , formát výpisu SVN (v2) [d] , formát výpisu SVN (v3) [d] a formát výpisu SVN (obecný) [d]
Licence Licence Apache 2.0 [9]
webová stránka subversion.apache.org
 Mediální soubory na Wikimedia Commons

Subversion [10] (také známý jako " SVN " [11] ) je bezplatný systém centralizované správy verzí oficiálně vydaný v roce 2004 společností CollabNet . Od roku 2010 je Subversion projektem Apache Software Foundation a oficiálně se nazývá Apache Subversion (registrovaná ochranná známka [12] ).

Cílem projektu na počátku vývoje bylo nahradit [13] [14] tehdy rozšířený Concurrent Versions System (CVS), který je dnes považován za zastaralý [15] [16] [17] . Subversion implementuje všechny hlavní vlastnosti CVS a neobsahuje některé z jeho nedostatků.

Subversion stále používají některé komunity s otevřeným zdrojovým kódem (včetně těch, které dříve používaly CVS ), ale téměř všechny velké projekty přešly na DVCS . Mezi posledními uživateli Subversion mezi otevřenými projekty zůstává FreeBSD , ale také oznámili přechod na Git [18] , a například i Free Pascal . Subversion je již dlouhou dobu používán takovými známými projekty jako Apache , GCC , FFmpeg , LLVM . Subversion se také používá v soukromých projektech a korporátním světě, ale je těžké odhadnout, jak široce. Hosting Subversion , včetně projektů s otevřeným zdrojovým kódem, poskytují také oblíbené hostingové projekty SourceForge.net , Tigris.org , Google Code a BountySource .

V roce 2007 analytická firma Forrester ohodnotila Subversion jako „jediného lídra v kategorii Standalone Software Configuration Management (SCM) a silného přispěvatele v kategorii Software Configuration and Change Management (SCCM)“ při porovnávání výhod a nevýhod různých systémy . [19]

Podle statistik o používání linuxových balíčků – distribucí Debian [20] a Ubuntu [21] dosáhl počet aktivních uživatelů Subversion vrcholu kolem roku 2010 a od roku 2016 začal klesat. Stále však existuje více projektů využívajících Subversion než CVS , Mercurial a Bazaar (stav k srpnu 2019 ).

Oficiální dokumentace je umístěna [22] v knize vydané nakladatelstvím O'Reilly Media , která je volně dostupná [23] a přidávají ji autoři, když jsou vydány nové verze SVN. Vydává také své překlady do řady jazyků včetně ruštiny, ale přestože anglické verze knihy nyní popisují verze 1.8 a 1.7, existují pouze knihy v ruštině, které popisují verze do 1.4 včetně [24] .

Historie

Vývoj Subversion začal v roce 2000 z iniciativy a s finanční podporou CollabNet. Iniciátoři projektu chtěli vytvořit bezplatný systém správy verzí, v zásadě podobný CVS, ale bez jeho chyb a nepříjemností . V té době neexistovaly nejlepší programy této třídy se svobodnou licencí, CVS bylo de facto standardem mezi vývojáři svobodného softwaru. Tím, že si jej zvolili jako základ, vývojáři Subversion doufali, že zjednoduší vývoj využitím již osvědčených konceptů a zároveň usnadní mnoha uživatelům CVS migraci na nový systém. [25]

Hlavní události v historii vývoje Subversion.

Obecné informace

Funkce

Model práce

Subversion je centralizovaný systém (na rozdíl od distribuovaných systémů jako Git nebo Mercurial ), což znamená, že data jsou uložena v jediném úložišti. Úložiště může být umístěno na místním disku nebo na síťovém serveru .

Práce v Subversion se příliš neliší od práce v jiných centralizovaných systémech správy verzí. Klienti zkopírují soubory z úložiště, aby vytvořili místní pracovní kopie, poté provedou změny v pracovních kopiích a tyto změny odešlou do úložiště. K úložišti může přistupovat více klientů současně. Subversion primárně používá model kopírování-upravování-sloučení pro spolupráci na souborech . Také pro neslučitelné soubory (různé binární formáty souborů) můžete použít model lock-modify-unlock .

Při ukládání nových verzí se používá delta komprese : systém najde rozdíly mezi novou verzí a předchozí a zapíše je pouze, aby nedocházelo k duplicitě dat.

Při použití přístupu WebDAV je podporováno i transparentní verzování – pokud se jakýkoli klient WebDAV otevře pro zápis a poté uloží soubor uložený na síťové sdílené položce, automaticky se vytvoří nová verze.

Typy úložišť

Subversion nabízí dvě možnosti organizace repozitářů [40] . Repozitáře prvního typu slouží k ukládání databáze založené na Berkeley DB , repozitáře druhého typu jsou běžné soubory speciálního formátu (přístup k datům je organizován pomocí vlastních knihoven, bez použití databází třetích stran). Vývojáři Subversion často označují úložiště jako "souborový systém", a proto se druhý typ nazývá FSFS, což znamená (verzovaný) souborový systém ( anglicky  File System ) nad (běžným) souborovým systémem.

Oba typy úložišť poskytují při správné organizaci dostatečnou spolehlivost [41] (Berkeley DB používá zámky souborů, nelze jej tedy použít na některých síťových souborových systémech, které zámky nepodporují), každý z nich má své výhody a nevýhody. Předpokládá se, že FSFS se snáze správně konfiguruje, vyžaduje méně pozornosti správce. Navíc před vydáním 1.4 mohla úložiště využívající Berkeley DB za určitých podmínek skončit v  takzvaném zaklíněném stavu ; k obnovení jeho funkčnosti byl nutný zásah administrátora.

Počínaje verzí 1.2 se pro nová úložiště standardně používá FSFS. S vydáním 1.8 bylo používání Berkeley DB zastaralé [37] . Nové funkce, které budou přidány v budoucích verzích, nemusí fungovat na serverech používajících Berkeley DB. Podpora pro Berkeley DB může být v budoucnu ukončena.

Přístup k úložišti

Subversion poskytuje následující způsoby přístupu k úložišti:

Všechny tyto metody lze použít pro práci s oběma typy repozitářů (FSFS a Berkeley DB). Pro přístup ke stejnému úložišti lze současně použít různé metody.

Základní pojmy

Systém souborů

Z pohledu uživatele je úložiště Subversion "dvourozměrný" souborový systém . Objekty v úložišti ( soubory a adresáře ) jsou identifikovány dvěma " souřadnicemi ": názvem a číslem revize . Jinými slovy, úložiště je pole snímků (revizí) stromu souborů a adresářů, indexovaných podle čísla revize. Každý takový snímek je běžný (jednorozměrný) souborový systém.

Je-li třeba uvést konkrétní revizi objektu, použije se zápis ve tvaru: имя@ревизия, například /main.c@29 soubor /main.c v revizi 29. Takové označení revize použité k objasnění názvu se nazývá peg revize . 

Na Obr. 1 znázorňuje grafické znázornění souborového systému: svislá osa odpovídá množině jmen, vodorovná osa množině revizí.

Názvy souborů

Název objektu souborového systému v Subversion je tvořen podle stejných pravidel jako v operačních systémech podobných UNIX: existuje pouze jeden kořenový adresář, prvky cesty jsou odděleny lomítkem ("/"). Objekty souborového systému jsou soubory a adresáře (stejně jako symbolické odkazy , které jsou emulovány z běžných souborů nastavením atributu svn:special).

Čísla revizí

Číslo revize v Subversion je přirozené číslo (nebo 0 pro úplně první revizi), které řeší číslo stavu úložiště, když se mění data, která obsahuje. Každé úspěšné potvrzení generuje přesně jednu novou revizi do úložiště, takže N -tá revize je stav úložiště po N- tém potvrzení.

V Subversion revize charakterizuje stav nikoli jednoho souboru, ale celého úložiště jako celku. Například revize 32 (na obrázku tečkovaná) je stav čtyř souborů a dvou adresářů, které v té době existovaly v úložišti.

Číslo revize je analogické času v tom smyslu, že nižší čísla revizí odpovídají dřívějším stavům úložiště a vyšší čísla revizí odpovídají pozdějším.

  • Minimální číslo revize 0 (nula) odpovídá počátečnímu stavu úložiště, kdy ještě nebyly provedeny žádné změny. V revizi nula obsahuje úložiště pouze prázdný kořenový adresář.
  • Maximální číslo revize odpovídá nejnovějšímu stavu úložiště, tj. stavu po odevzdání poslední úpravy. Místo zadání posledního čísla revize můžete použít klíčové slovo HEAD(hlavní revize); to je užitečné, protože číslo revize hlavy se zvyšuje s každým potvrzením.

Číslo revize lze považovat za jakési časové razítko v historii úložiště. Navíc každé číslo revize má absolutní hodnotu spojenou s časem, kdy byla revize provedena ( vlastnost svn:date ). Zadání čísla revize je však pohodlnější než zadání času, protože nedochází k záměně s časovými pásmy, zadání čísla je kratší a číslo revize nelze změnit.

Provozní a základní revize

Číslo revize se používá ve dvou různých kontextech :

  • provozní revize ( anglicky  operative revision );
  • revize jádra ( ang.  peg revize ).

Revize se nazývá provozní , pokud specifikuje revizi nebo rozsah revizí, na které má být operace aplikována , například:

svn log -r 199:230 http://some.path

V tomto příkladu je příkaz proveden svn logpro rozsah revizí 199:230, což je rozsah online revizí.

Zadání pouze názvu souboru a online revize však může někdy nejednoznačně ukazovat na objekty úložiště. Například v situaci znázorněné na Obr. 2, při spuštění následujícího příkazu existuje nejednoznačnost:

svn log -r 29:33 http://some.path/bar.txt

Příkaz určuje rozsah online revizí ( 29:33), ale oblasti zvýrazněné modře a zeleně na obrázku lze stejně tak považovat za historii souboru /bar.txtv rozsahu revizí 29:33. V takových případech je také nutné specifikovat pivotní revizi, aby se vyřešila nejednoznačnost. Revize jádra je číslo revize zadané navíc k URL objektu systému souborů (pomocí URL@ревизияzápisu " "). Název pochází z anglického slova peg , které lze přeložit jako „tyč“ nebo „kolíček“. Revize pivotu označuje řetězec stavů, do kterého zadaný pár patří URL@ревизия, a tak jednoznačně identifikuje objekt úložiště, na který má být příkaz aplikován. V níže uvedeném příkladu první příkaz vytiskne článek zvýrazněný na obrázku modře a druhý příkaz vytiskne článek zvýrazněný zeleně:

svn log -r 29:33 http://some.path/file.txt@32 svn log -r 29:33 http://some.path/bar.txt@34

Jako základní revize by měl být specifikován nejnovější stav objektu zájmu. Důvodem je to, že státní řetězec je jednoznačně sledován „zpět“, ale nikoli „vpřed“. Například adresa URL s revizí pivotu http://some.path/foo.txt@31 patří do dvou stavových řetězců (zvýrazněných zeleně a šedě). Z těchto dvou řetězců se zadaná adresa URL zaměřuje na šedý řetězec, to znamená, že při pohybu „vpřed“ od základní revize jsou operace kopírování ignorovány.

Operace se souborovým systémem

Následující operace lze provádět s objekty souborového systému v úložišti Subversion [42] (viz obrázek 1). Závorky označují krátké pojmenování operace v zápisu příkazu svn status.

  • Dodatek (A). Přidání objektu do systému souborů. Přidaný objekt nemá žádnou historii revizí. Příklad na obrázku:
  • Soubor /main.cbyl přidán v revizi 27.
  • Modifikace (M). Úprava objektu, jako je změna obsahu souboru nebo změna vlastností souboru nebo adresáře. Příklad na obrázku:
  • Soubor /main.cbyl upraven v revizi 28.
  • Odstranění (D). Vyjmutí souboru z hlavy a následné revize. V tomto případě soubor zůstane v předchozích revizích. Příklad na obrázku:
  • Soubor /main.cbyl odstraněn v revizi 30.
  • Doplněk s historií (A+). Představuje kopírování objektu uvnitř systému souborů úložiště, to znamená, že objekt je имя_источника@ревизия_источникаzkopírován do имя_копии@HEAD. Zkopírovaný objekt dědí historii revizí od zdroje až do okamžiku kopírování (dědění historie je na obrázku znázorněno tečkovanými odkazy). Příklady na obrázku:
  • v revizi 29 byl adresář /tags/R1zkopírován z adresáře /trunk@27;
  • v revizi 31 byl soubor /main.czkopírován z /main.c@29, tj. ze své dřívější revize, takže dříve smazaný (v revizi 30) soubor byl obnoven při zachování historie revizí.
  • Náhrada (R+). Vyskytuje se v případě, kdy v jedné revizi bylo provedeno jak odebrání objektu (D), tak přidání s historií (A+) objektu se stejným názvem. Ačkoli název zůstane během operace nahrazení nezměněn, Subversion zachází s objektem před a po nahrazení jako se dvěma různými objekty s různou historií revizí (historie starých končí v okamžiku nahrazení, historie nového se zdědí z zkopírujte zdroj a pokračuje dále). Příklad na obrázku:
  • v revizi 30 byl soubor /file.txtnahrazen : starý soubor byl /file.txtsmazán a nový soubor se stejným názvem byl zkopírován ze souboru /bar.txt@29.

Potvrzení změn

Pracovní kopie

Pracovní kopie je lokální kopie části dat z úložiště vytvořená klientským programem Subversion, která obsahuje kromě samotných dat i některé servisní informace (skryté adresáře s názvem .svn). Servisní informace jsou nezbytné pro správné fungování pracovní kopie; v servisních údajích nelze nic změnit. Nejmenší jednotka dat, kterou lze načíst z úložiště jako pracovní kopii, je adresář. Obsah adresáře nemusí být plně extrahován: mohou být například vyloučeny jednotlivé soubory nebo podadresáře. Není však možné rezervovat jeden soubor z úložiště jako pracovní kopii.

Jakýkoli podadresář pracovní kopie Subversion 1.6 a dřívějších je také plnou pracovní kopií, protože každý adresář obsahuje svá provozní data (adresáře .svn). Od verze 1.7 má každá pracovní kopie pouze jeden adresář .svnv kořenovém adresáři svého adresáře.

Pracovní kopie je samostatná v tom smyslu, že Subversion neukládá žádná data související s pracovní kopií mimo ni. Proto s jednou pracovní kopií můžete vytvořit několik dalších kopií jednoduchým kopírováním, aniž byste utráceli síťový provoz.

V adresářích služeb pracovní kopie je mimo jiné uložena tzv. čistá kopie ( angl.  pristine copy ) - soubory pracovní kopie v nezměněné podobě, tak jak byly extrahovány z úložiště (pro svn je to revize s názvem BASE). Čisté kopie vám umožní rychle zobrazit a vrátit zpět místní změny bez přístupu k úložišti. Velikost pracovní kopie na disku je však zhruba dvakrát větší (data + čistá kopie dat) než velikost samotných dat. Tento přístup je způsoben tím, že diskové prostředky jsou levnější a dostupnější než prostředky datové sítě .

Vytvoření pracovní kopie je obvykle prvním a nezbytným krokem k potvrzení místních změn, protože do úložiště lze odevzdat pouze změny provedené v pracovní kopii. Výjimkou jsou operace, které lze provádět přímo na úložišti bez vytvoření pracovní kopie.

Transakce

Úložiště v Subversion je organizováno ve formě transakcí s vlastnostmi atomicity a izolace ze sady vlastností ACID . Systém správy verzí tak zaručuje integritu, konzistenci a dostupnost úložiště kdykoli.

  • Atomicita commitů ( angl.  atomic commits ) - změny v několika souborech nebo adresářích jsou opraveny v jedné transakci, přičemž se generuje jedna revize. V případě neúspěšného commitu, v případě jakéhokoli selhání nebo chyby systém garantuje, že úložiště neskončí v částečně upraveném stavu – buď se do úložiště dostanou všechny změny, nebo (v případě selhání) – žádné.
  • Izolace zajišťuje, že stavy přechodného úložiště v rámci transakce nejsou viditelné pro ostatní transakce a uživatele. Pokud například jeden uživatel opraví změny v několika souborech v jedné transakci, ostatní uživatelé neuvidí takový stav úložiště, ve kterém některé soubory již byly změněny, a někteří nikoli.

Tyto vlastnosti nejsou zaručeny pro pracovní kopii Subversion - na rozdíl od úložiště může být v přechodném nebo uzamčeném stavu, pokud dojde k jeho zhroucení nebo přerušení (to znamená, že svn cleanuppřed pokračováním bude nutné jej obnovit příkazem nebo znovu vytvořit).

Místní a vzdálené příkazové formuláře

Všechny příkazy klienta Subversion lze rozdělit do následujících skupin:

  • úprava pracovní kopie;
  • úprava úložiště;
  • úprava pracovní kopie i úložiště;
  • nic neupravovat.

Struktura úložiště

Struktura projektu v úložišti

Formálně Subversion neklade žádná omezení na souborovou strukturu projektu – může to být cokoliv v rámci pravidel pro pojmenovávání objektů v souborovém systému. Existují však pokyny, které usnadňují práci s větvemi a značkami. V nejjednodušším případě se doporučuje vytvořit alespoň tři podadresáře v kořenovém adresáři úložiště:

/. trunk branches tags

Celá souborová struktura projektu (hlavní vývojová linie) musí být obsažena v podadresáři ,trunk podadresář branchesmusí obsahovat větve projektu a tags značky . Například následující adresářová struktura úložiště:

/. trunk branches branch_1 tags tag_1 tag_2

předpokládá, že projekt ( trunk) má jednu větev „ branch_1“ a dva štítky „ tag_1“ a „ tag_2“. Každý z těchto adresářů ( , a trunk) branch_1obsahuje kopii odpovídající verze projektu. tag_1tag_2

Pokud je v úložišti několik (pod)projektů, vytvoří se pro každý (pod)projekt následující struktura podadresářů:

/. project1 trunk branches tags project2 trunk branches tags

To znamená, že kořenový adresář obsahuje adresáře projektu a každý z nich má svůj vlastní trunk, branches, tags, který se vztahuje pouze k tomuto projektu. Popsané adresářové struktury úložiště jsou pouze příklady, v praxi lze úložiště organizovat způsobem, který nejlépe vyhovuje danému konkrétnímu případu. [43] [44]

Dalším způsobem, jak uložit více projektů, je vytvořit více úložišť. Projekty, které spolu nijak nesouvisí, by měly být umístěny v různých úložištích, protože mezi úložišti nelze provádět operace kopírování, přesouvání a slučování. Několik úložišť lze v případě potřeby sloučit do jednoho se zachovanou historií revizí (importem pomocí příkazu svnadmin loads parametrem --parent-dir).

Větve

Subversion používá k implementaci větví a značek "souborový" model (stejný jako Perforce [45] ), tj. větev je pouze adresář (můžete také vytvořit větev z jednoho souboru místo adresáře). Nová větev se vytvoří příkazem svn copy. Větev lze vytvořit v libovolném adresáři úložiště, ale má smysl dodržovat výše popsané konvence o tom, kde vytvářet nové větve. Další informace o pobočkách naleznete v části Větvení a slučování .

Tagy

Vytvoření štítku se také provádí příkazem svn copy, to znamená, že je to technicky stejné jako vytvoření větve. Rozdíl je pouze ve způsobu použití: předpokládá se, že údaje v popisku nikdo nezmění (potvrdí v něm změny). Například na Obr. 1 značka vytvořená v revizi 29: adresář /trunkz revize 27 zkopírován pod názvem /tags/R1. Nyní, pokud nezměníte data v adresáři /tags/R1, zůstane navždy přesnou kopií adresáře /trunk@27, to znamená, že to bude štítek .

Koncept tagů používaný v Subversion se liší od konceptu tagů v jiných systémech správy verzí. Typicky je štítek symbolický název, který adresuje sadu souborů a jejich stav. V Subversion štítek kopíruje sadu souborů a jejich stav. Kopírování štítků v Subversion má své výhody a nevýhody.

výhody:

  • štítek je viditelný v adresářové struktuře, můžete vytvořit pohodlnou stromovou organizaci štítků.

nedostatky:

  • je obtížné zjistit, jaké štítky soubor zadal (totéž pro adresář);
  • pokud jsou přístupová práva nastavena individuálně [46] pro adresáře, pak štítek tato práva nedědí;
  • obsah štítku lze změnit;
  • pokud vytvoříte pracovní kopii ze štítku a provedete jakékoli změny z této pracovní kopie, změní se tím samotný štítek, nikoli data, která byla označena. Správný způsob, jak pracovat "ze štítku", je vytvořit pracovní kopii nikoli ze štítku, ale z toho, co je zdrojem tohoto štítku.

Vlastnosti

Jednou z důležitých vlastností Subversion je podpora vlastností, tedy textových párů jméno = hodnota , které lze nastavit na objektech v obchodě. Vlastnosti se používají ve dvou různých kontextech: pro objekty souborového systému a pro revize.

Vlastnosti objektů systému souborů

Každému souboru nebo adresáři v úložišti lze přiřadit sadu vlastností. Změny vlastností se ukládají do historie stejným způsobem jako změny systému souborů. Uživatelé mohou nastavit vlastnosti s libovolným názvem; existuje také předdefinovaná sada vlastností nástroje, které používá klientský program Subversion (názvy vlastností nástroje mají předponu "svn: ").

Vlastnosti souboru svn:executable Udělá soubor spustitelným (pro pracovní kopie pod operačními systémy rodiny UNIX ). svn:mime-type Ukládá typ MIME souboru. Ovlivňuje způsob, jakým fungují příkazy, které ukazují rozdíly v souborech a slučují změny (slučování). svn:keywords Seznam klíčových slov ( angl.  keywords ), která budou v souboru nahrazena odpovídajícími hodnotami. Aby došlo k nahrazení, klíčové slovo musí být v souboru přítomno jako $keyword$. Používá se k automatické aktualizaci hodnot v souboru, které se mění z verze na verzi (například číslo revize). svn:eol-style Určuje pravidlo pro převod znaků konce řádku ( EOL ) v textovém souboru .  Používá se v případech, kdy soubor musí mít specifický typ znaku EOL. Obvykle se používá "nativní" - v tomto případě typ znaků na konci řádku odpovídá typu přijatému v operačním systému, ve kterém se vytváří pracovní kopie. svn:needs-lock Označuje, že soubor bude při načtení z úložiště pouze pro čtení. Tato vlastnost je určena k použití ve spojení s blokovacím mechanismem . Odmítnutí zápisu do souboru je připomínkou, abyste získali zámek souboru před jeho úpravou: když je zámek získán, klientský program Subversion automaticky učiní soubor zapisovatelný (opětovné uvolnění zámku způsobí, že soubor nebude upravitelný). Zámky lze použít bez nastavení této vlastnosti. To se však nedoporučuje, protože existuje riziko, že jiný uživatel může začít upravovat zamčený soubor, a to bude odhaleno až po potvrzení změn. svn:special Tato vlastnost není určena k tomu, aby ji nastavovali nebo upravovali uživatelé. V současné době se používá k ukládání symbolických odkazů v úložišti. Když je do úložiště přidán symbolický odkaz, vytvoří se v úložišti soubor s příponou svn:special. Když je tento soubor vypůjčen v systému podobnému UNIXu , klientský program Subversion jej převede zpět na odkaz. svn:mergeinfo Ukládá informace o tom, které cesty byly sloučeny do tohoto souboru. Vlastnost byla představena ve verzi 1.5, používá se pro sledování sloučení .  Je to sada řetězců ve tvaru název_souboru: rozsah_revizí . Zde název_souboru  je úplný (s cestou z kořenového adresáře souborového systému úložiště) název souboru nebo adresáře, ze kterého byl sloučen zadaný rozsah revizí. Řádky jsou automaticky aktualizovány během operací sloučení; při následných sloučeních bere Subversion v úvahu dříve přidané řádky, čímž se vyhne opakovanému slučování stejných změn. Nedoporučuje se měnit vlastnost ručně – může to narušit mechanismus sledování sloučení.svn:mergeinfo Vlastnosti adresáře svn:ignore Seznam vzorů jmen souborů a adresářů, které bude klientský program Subversion v tomto adresáři ignorovat. Tato vlastnost je podobná souboru .cvsignorev CVS . Vlastnost je zpravidla nakonfigurována tak, že klientský program "nevidí" soubory a adresáře, které jsou automaticky vytvářeny různými programy a neměly by mít verzi (například objektové soubory , dočasné soubory atd.). Tato vlastnost se nevztahuje na podadresáře. svn:externals Umožňuje automaticky extrahovat sadu adresářů do pracovní kopie zadáním jejich URL (můžete i z jiného úložiště). svn:mergeinfo Stejné jako u souborů . Vlastnosti revize

Druhým typem objektu, pro který existují vlastnosti, jsou samotné revize. V tomto případě mohou být názvy vlastností také jakékoli; některé vlastnosti s předponou "svn: " mají zvláštní význam. Rozdíl mezi vlastnostmi revizí a vlastnostmi objektů systému souborů spočívá v tom, že pro prvně jmenované není koncept historie verzí použitelný (protože konkrétní hodnota vlastnosti je přiřazena jedné revizi). Jinými slovy, vlastnosti revize lze změnit, ale stará hodnota se ztratí. Ve výchozím nastavení jsou změny vlastností revize zakázány; aby administrátor mohl vytvořit skript ( angl.  hook ) obsluhující událost pre-revprop-change.

svn:date Datum a čas vytvoření revize. svn:author Jméno uživatele, který provedl změny zahrnuté v této revizi. svn:log Popis změn provedených v této revizi (text zadaný uživatelem při potvrzení změn).

Vlastnosti revize zpravidla mění pouze správce úložiště za účelem opravy nesprávných údajů. Pokud například uživatel zapomněl při provádění změn zadat textový popis, může správce tento popis vytvořit úpravou souboru svn:log.

Použití Subversion

Pracovní cyklus

Typická iterace pracovního postupu se Subversion zahrnuje následující kroky.

  • Aktualizace pracovní kopie z úložiště ( svn update) nebo vytvoření nové ( svn checkout).
  • Změna pracovní kopie. Změny v adresářích a informacích o souborech se provádějí pomocí nástrojů Subversion, ale Subversion se žádným způsobem nepodílí na změně (obsahu) souborů - změny provádějí programy k tomu určené ( textové editory , vývojové nástroje atd.):
    • je třeba přidat nové (zatím neregistrované do úložiště) soubory a adresáře (příkaz svn add), to znamená přenést pod kontrolou verzí;
    • pokud je třeba soubor nebo adresář ve vaší pracovní kopii smazat , přejmenovat , přesunout nebo zkopírovat , musíte použít prostředky Subversion ( svn mkdir, svn delete, svn move, svn copy);
    • zobrazit stav pracovní kopie a místní (dosud neprovedené) změny ( svn info, svn status, svn diff);
    • všechny místní změny, které selžou, lze vrátit zpět ( svn revert).
  • Je-li to nutné, další aktualizace pro příjem změn provedených v úložišti ostatními uživateli a sloučení těchto změn s vašimi vlastními ( svn update).
  • Odeslání změn (a/nebo výsledků sloučení) do úložiště ( svn commit).

Větvení

Větvení je důležitým aspektem fungování systémů správy verzí, protože typické techniky verzování [47] (alespoň ve vývoji softwaru ) zahrnují použití větví. Subversion má poměrně pokročilé možnosti větvení a slučování ( nepodporuje však slučování přejmenovaných souborů a adresářů).

Na Obr. Obrázek 3 obvykle ukazuje příklad vývoje větví v úložišti. Zelená barva znázorňuje hlavní linii vývoje projektu ( angl.  mainline, kmen ), žlutá - větve, modrá - tagy, purpurová - větev, jejíž vývoj byl ukončen. Červené šipky ukazují sloučení změn.

Vytváření větví

Nová větev (stejně jako tag ) se vytvoří příkazem svn copy, který vytvoří kopii v úložišti s děděním historie revizí zdroje ( operace A+ ). K vytváření větví byste měli vždy používat "vzdálenou" formu příkazu svn copy, například:

svn kopie http://.../trunk/dir http://.../branches/branch_name -m "Vytvoření větve dir"

Výsledná kopie bude větev (nebo značka, podle toho, jak s ní pracujete). V budoucnu lze změny provedené na větvi provést ve zdroji, ze kterého byla tato větev vytvořena, takové šíření změn se nazývá merge . 

Kopírovací operace v Subversion jsou levné ( angl. Cheap  copy ), to znamená, že vyžadují malé pevné množství času a místa na disku. Úložiště je navrženo tak [48] , že při žádném kopírování nedochází k duplikování dat, ale k vytvoření odkazu na zdroj (obdoba pevného odkazu ), nicméně tento mechanismus je čistě interní - z pohledu uživatele zobrazení, dochází k vytvoření kopie. Díky vysoké efektivitě větvení lze větve vytvářet tak často, jak je potřeba (avšak slučování  - nezbytný doplněk větvení - je v Subversion pomalejší než v jiných moderních systémech správy verzí).

Práce s větvemi

Obecně se práce na větvi neliší od práce na hlavní vývojové linii ( kmen ). Specifické příkazy jsou vyžadovány pouze pro činnosti zahrnující více než jednu větev. Tyto příkazy zahrnují (kromě příkazu create branch svn copy):

  • svn switch - přepnutí existující pracovní kopie do jiné pobočky. Přepnutím se změní režie pracovní kopie, jako by pracovní kopie byla získána operací svn checkoutz větve, do které byla přepnuta. V tomto případě je objem síťového provozu menší než u svn checkout, protože se přenáší pouze rozdíl mezi daty v pracovní kopii a cílové větvi;
  • svn merge - kopírovat changeset mezi větvemi - používá se pro slučování.

Celý cyklus práce s větvemi zpravidla zahrnuje následující kroky:

  • vytvoření pobočky ( svn copy);
  • přepnutí existující pracovní kopie na větev ( svn switch) nebo vytvoření nové pracovní kopie nahráním ( svn checkout);
  • změna souborů a adresářů v pracovní kopii, potvrzení těchto změn ( svn commit);
  • kopírování čerstvých změn z nadřazené větve provedené po větvi ( svn merge, svn commit);
  • kopírovat změny z větve do nadřazené větve ( svn merge, svn commit);
  • odstranění větve ( svn delete), pokud její životní cyklus skončil.

Sloučení

Kopírování změn mezi větvemi

Sloučení v Subversion je aplikace na větev sady změn provedených na jiné (nebo stejné) větvi. Chcete-li implementovat sloučení, musíte použít příkaz svn merge - ten aplikuje sadu změn na pracovní kopii; pak musíte provést změny ( svn commit).

Slučování terminologie je poněkud matoucí. Termín sloučení není zcela přesný, protože nedochází ke slučování poboček jako takové .  Kromě toho byste neměli ztotožňovat merge a příkaz : za prvé, pro sloučení musíte provést (kromě ) řešení konfliktů a odevzdat, a za druhé, aplikace není omezena na sloučení. svn mergesvn mergesvn merge

Další použití příkazu svn merge

Příkaz svn mergelze použít pro více než jen sloučení. Příkaz ve skutečnosti provádí změny v pracovní kopii rovnající se rozdílu mezi dvěma adresáři nebo soubory v úložišti , proto svn mergeje univerzálním nástrojem pro přenos změn. Zde je několik příkladů použití příkazu svn merge:

  • vrácení již provedených změn, včetně celé řady revizí;
  • pohodlný pohled (ve formě změn v pracovní kopii) na rozdíl mezi dvěma stavy úložiště.

Vytvoření trezoru

Příkaz se používá k vytvoření trezoru svnadmin create. Tato operace vytvoří prázdné úložiště v zadaném adresáři.

Subversion a CVS

Srovnání

Níže je srovnání parametrů systémů Subversion a CVS, protože Subversion je umístěn přesně jako vylepšení CVS. Srovnání se provádí pouze u těch parametrů, ve kterých se tyto systémy liší. Celkově Subversion překonává CVS ve všech směrech kromě štítků v konvenčním smyslu (to znamená štítků, které řeší objekty souborového systému).

Parametr podvracení CVS
Schopnosti
Katalogy Sleduje verze nejen souborů, ale i adresářů. Verze adresářů nejsou sledovány, to znamená, že adresářová struktura je stejná (ta, která v úložišti momentálně existuje) pro všechny revize a všechny větve. Pokud změníte adresářovou strukturu, pak při extrahování starých stavů získáme správné (staré) revize souborů, ale ve špatné (existující v době extrakce) adresářové struktuře.
Transakce Atomicita vícesouborových commitů. Atomicita je pouze na úrovni odevzdání jednoho souboru. Odevzdání změn do více souborů je ve skutečnosti rozděleno do posloupnosti odevzdání jednotlivých souborů. Pokud je taková sekvence potvrzení přerušena, pak některé soubory zůstanou potvrzené, zatímco jiné zůstanou nepotvrzené.
Changesets Jsou podporovány sady změn .  Sady změn nejsou podporovány.
Úpravy názvu souboru Podporuje kopírování, přesouvání a přejmenování souborů a adresářů bez ztráty historie změn. Při kopírování, přesouvání a přejmenovávání souborů nemá soubor s novým názvem žádnou historii, to znamená, že spojení se starým názvem a jeho historií verzí je zcela ztraceno. Totéž pro soubory uvnitř adresáře při úpravě jeho názvu [49] .
vlastnosti Každý soubor a adresář může mít přidruženou libovolnou sadu vlastností, sestávající z názvu a hodnoty. Vlastnosti jsou také pod kontrolou verzí. Vlastnosti nejsou podporovány.
Zámky Je podporováno volitelné zamykání souborů (od verze 1.2). Zámky nejsou podporovány, ale existuje podobný mechanismus zvaný sledování .
větví Větve ( branch , viz Glosář ) jsou implementovány v prostoru cesty. To znamená, že pro vytvoření větve se adresář zkopíruje (kopií bude větev). Vytváření takových kopií je rychlá operace, která není náročná na zdroje, protože data nejsou duplikována , místo toho je opravena nová verze, která se od předchozí liší pouze umístěním souborů. Větve jsou realizovány ve „třetí dimenzi“. To znamená, že soubor na větvi je adresován třemi parametry: cesta v systému souborů, revize (nebo nějaký jiný způsob, jak označit revizi, jako je čas), název větve .
Tagy Neexistují žádné značky ( tag , viz slovník ) jako takové. Místo toho se používá hierarchie adresářů - pro štítek (stejně jako pro větev) je vytvořen samostatný adresář. Tag je větev, na které se podle konvence neprovádějí žádné další změny. Štítek je kopie označeného stavu souborů a adresářů. Značky jsou podporovány. Štítek se týká označeného stavu souborů.
Účinnost
Výměna klient-server Jakékoli aktualizace verzí mezi klientem a serverem pouze přenášejí rozdíly mezi soubory, což může výrazně snížit provoz v síti. Rozdíly jsou přenášeny ze serveru na klienta a celý objekt je přenášen z klienta na server.
Binární soubory Pracuje stejně efektivně s textovými i binárními soubory . Práce s binárními soubory je méně efektivní: každá nová verze je uložena v úložišti celá.
Vytváření větví a štítků Vyžaduje malé pevné množství času a místa na disku. Časové náklady jsou vysoké (v závislosti na počtu zapojených souborů). Názvy větví a značek jsou uloženy redundantně (ve všech zúčastněných souborech).
Režie v pracovní kopii Adresáře služeb pracovní kopie ukládají čistou kopii. Procházení a vracení místních změn je tedy rychlé (bez přechodu do úložiště), ale velikost pracovní kopie na disku je přibližně dvakrát větší než velikost samotných dat. Čistá kopie se neukládá, velikost pracovní kopie je přibližně stejná jako velikost dat. V důsledku toho operace zobrazení a vrácení pro místní změny vyžadují přístup k úložišti a jsou pomalé.
Spotřeba paměti na serveru Méně [50] . Více.

Migrace z CVS na Subversion

Konverze úložiště

Existuje program cvs2svn navržený tak, aby převedl CVS repozitář na hotový Subversion repozitář (nebo git repozitář ) nebo na textový výpis, který pak lze importovat do repozitáře pomocí svnadmin. Zároveň cvs2svn ukládá všechny informace obsažené v úložišti CVS: větve, značky, popisy změn, jména autorů, data odevzdání. Kromě toho jsou změny v různých souborech potvrzené společně převedeny do jedné revize.

Rozdíly v použití Rozdíly ve zpracování souborů

V CVS se přesouvání (přejmenování) a kopírování souborů a adresářů provádí opětovným přidáním objektu s novým názvem a (při přesouvání a přejmenování) smazáním starého objektu. Při této práci se soubory a adresáře v úložišti vytvářejí znovu a ztrácejí svou historii změn. Subversion musí k provádění těchto operací používat příkazy move ( movenebo mv) a copy ( ). copyJejich použití zachovává historii změn a umožňuje vyhnout se zbytečným operacím (zejména při práci s adresáři nebo dokonce větvemi souborového systému).

Na rozdíl od CVS jsou některé operace s pracovním kopírováním (jako je mazání a přesun souboru) zpracovávány samotným Subversion. Popsané a další rozdíly při práci se soubory pracovních kopií shrnuje následující tabulka ( commitvynechá operaci , kde je potřeba v obou případech):

Úkon CVS podvracení Poznámky
Mazání souboru rm soubor
cvs rm soubor
svn rm file soubor není nutné nejprve ručně smazat
Mazání souborů pomocí masky rm *
cvs rm soubor1 soubor2 ...
svn rm * soubory není třeba předem ručně mazat,
není třeba vyjmenovávat všechny soubory
Přejmenovat/Přesunout mv soubor1 soubor2
cvs rm soubor1
cvs přidat soubor2
svn mv file1 file2 soubor není nutné přesouvat ručně
, historie souboru je zachována
kopírování cp soubor1 soubor2
cvs přidat soubor2
svn copy file1 file2 soubor není nutné kopírovat ručně
historie souboru je zachována (rozvětvená)
Přidání (vytvoření) adresáře mkdir dir
cvs přidat dir
svn mkdir dir
svn commit
adresář nelze
po přidání adresáře vytvořit ručněcommit
Přidání adresáře se soubory cvs add dir
cd dir
cvs add file1 file2
svn add dir adresář je přidán se soubory, které obsahuje
Přejmenování adresáře se soubory
(žádné podadresáře)
mkdir dir2
cvs add dir2
mv dir1/* dir2
cvs rm dir1/file1 dir1/file2 ...
cvs add dir2/*
svn mv dir1 dir2 není třeba vytvářet a přidávat adresáře
, není třeba ručně přesouvat soubory,
není třeba vypisovat všechny soubory,
historie souborů je uložena
Přejmenování větve souborového systému
(adresáře se soubory a podadresáře)
opakujte výše uvedené příkazy
pro každou úroveň vnoření
nebo každý podadresář [51]
svn mv dir1 dir2 viz výše
nezávisí na počtu úrovní a adresářů
Adresování stavu úložiště

V Subversion není nutné vytvářet tagy nebo používat datum/čas k řešení stavu úložiště, v jednoduchých případech (například pro získání verze po určitém odevzdání) bude snazší zadat požadované číslo revize .

Vnitřní struktura

Úrovně

Subversion je koncipován jako soubor knihoven rozdělených do několika úrovní. Každý z nich plní specifický úkol a umožňuje vývojářům vytvářet vlastní nástroje v závislosti na složitosti a úkolu.

fs Nejnižší úroveň; implementuje verzovaný souborový systém, který ukládá data. Repos Úroveň úložiště implementovaného v systému souborů. Na této úrovni je implementováno mnoho pomocných funkcí a podporuje také spouštění handlerů ( anglicky  hooks ), tedy skriptů, které se spouštějí při výskytu události. Úrovně Fs a Repos dohromady tvoří rozhraní souborového systému . mod_dav_svn Poskytuje WebDAV / Delta-V přístup přes Apache 2. Ra Implementuje přístup k úložišti (místním i vzdáleným). Počínaje touto úrovní lze na úložiště odkazovat pomocí URL, tzn.
  • file:///path/pro místní přístup,
  • http://hostitel/cesta/ nebo https://hostitel/cesta/ pro přístup WebDAV, popř
  • svn://hostitel/cesta/ nebo pro přístup přes protokol SVN.svn+ssh://host/path/
Klient, WC Nejvyšší úroveň. Abstrahuje přístup k úložišti a provádí typické klientské úlohy, jako je ověření uživatele nebo porovnání verzí. Klient používá knihovnu WC ke správě místní pracovní kopie.

Konfigurace klienta

Standardní klientská utilita Subversion, SVN, se konfiguruje pomocí proměnných prostředí a souborů INI vytvořených v domovském adresáři uživatele v podadresáři .subversion(umístění konfigurace v systémech Windows, v souborech nebo registru závisí na nastavení systému). V konfiguraci SVN také ukládá do mezipaměti SSL certifikáty, přihlašovací jména, hesla atd. (pokud to není v konfiguraci zakázáno) pro přístup k serverům Subversion.

Obsah adresáře .subversion:

  • soubor servers - obsahuje informace o metodách síťového připojení ke vzdálenému úložišti;
  • soubor config - obsahuje další konfigurační informace [52]
  • adresář auth - obsahuje cache serverů, certifikátů, loginů a hesel
  • soubor README.txt - dokumentace konfigurace SVN

Nevýhody

Problémy s přejmenováním souborů

Subversion nemusí vždy zpracovat přejmenování souborů správně, pokud se obsah souboru změní současně s přejmenováním. Problémy mohou také nastat, pokud soubor přejmenovaný v místní kopii upraví někdo jiný v úložišti. Některé z těchto problémů jsou opraveny ve verzi 1.5, ale toto řešení ještě není dokončeno. [53]

Špatná podpora pro slučování poboček

Operace slučování větví jsou také považovány za slabou stránku Subversion. Před verzí 1.5 museli uživatelé všechny takové operace sledovat ručně pomocí podrobných záznamů changelogu. Od verze 1.5 byla zavedena základní podpora pro automatické sledování sloučení, kterou vývojáři plánují vylepšit v dalších vydáních [54] . Subversion v současné době poměrně dobře podporuje běžné slučovací scénáře; ve složitějších případech jsou možné problémy. Doporučuje se [55] organizovat pracovní postup tak, aby se předešlo problematickým scénářům. Slučování přejmenovaných souborů a adresářů není podporováno.

Nelze smazat data z úložiště

Informace jednou umístěné v úložišti Subversion tam zůstanou navždy: soubor lze smazat v aktuální revizi, ale vždy je možné z úložiště získat jednu z předchozích revizí, ve kterých soubor existoval. Přestože uchovávání minulých revizí je ve skutečnosti účelem používání systémů správy verzí, někdy je nutné zcela odstranit informace z úložiště, které tam byly omylem umístěny. Subversion neposkytuje žádný nativní způsob, jak toho dosáhnout [56] ; jedinou možností je vytvořit výpis úložiště, zpracovat jej pomocí standardního nástroje svndumpfilter a poté úložiště z výpisu obnovit. Existují také programy třetích stran pro automatizaci tohoto procesu, ale v každém případě tato operace vyžaduje dočasné pozastavení přístupu k úložišti a zásah správce s dostatečně vysokými právy, aby bylo možné staré úložiště zcela vymazat a nahradit novým jeden.

Dodatečný software

  • klienti :
    • RapidSVN  je multiplatformní klient Subversion C++ ;
    • SmartSVN  je multiplatformní Subversion Java klient ;
    • TortoiseSVN  je klient Subversion implementovaný jako rozšíření Průzkumníka Windows ;
    • RabbitVCS  je klient Subversion implementovaný jako rozšíření pro správce souborů Linux (dříve nazývaný NautilusSVN);
    • KDESvn je grafický klient Subversion jako součást sady aplikací KDE Software Compilation;
    • VisualSVN  je rozšíření pro Microsoft Visual Studio .
  • Pluginy :
  • Webová rozhraní :
    • Trac  je nástroj založený na technologii Wiki,
    • Redmine  - navíc sleduje chyby,
    • USVN  je nástroj pro vytváření a správu přístupu k úložištím, specializovaný na SVN,
    • ViewVC ,
    • websvn ,
    • SVNManager  - PHP nástroj pro správu repozitářů (vytváření, mazání, načítání a uvolňování; správa uživatelů a skupin),
    • Submin  je nástroj pro správu úložišť a uživatelů, včetně správy řízení přístupu k jednotlivým adresářům v úložišti,
    • cSvn je  multiplatformní klient Subversion C.
  • Srovnávací tabulka: webová rozhraní:

název

Popis

Jazyk

DB

Licence

webová stránka

Aktualizace

Verze

Trac

nástroj založený na technologii Wiki

Krajta

SQLite, PostgreSQL, MySQL a MariaDB

Upravená licence BSD

trac.edgewall.org Archivováno 8. dubna 2013 na Wayback Machine

21.06.2017

1.2.2

Redmine

další sledování chyb

rubín

MySQL, PostgreSQL, SQLite, Oracle.

GNU General Public License

redmine.org Archivováno 27. dubna 2011 na Wayback Machine

09.12.2018

4.0.0

USVN

nástroj pro vytváření a správu přístupu k úložištím, specializovaný na SVN

PHP

MySQL, SQLlite

CeCill (licence kompatibilní s GPL).

www.usvn.info Archivováno 12. května 2011 na Wayback Machine

13.01.2012

1.0.6

ViewVC

bez správy uživatelů, nevyžaduje podporu DAV webovým serverem.

Krajta

MySQL

Dvoučlenný Berkeley styl

www.viewvc.org Archivováno 4. května 2011 na Wayback Machine

02.12.2010

1.1.8

WebSVN

rozhraní pro procházení k SVN

PHP

XML

GNU GPL

websvn.tigris.org Archivováno 12. června 2006 na Wayback Machine

12. 10. 2010

2.3.2

Správce SVN

nástroj pro správu úložišť (vytváření, mazání, načítání a vyjímání; správa uživatelů a skupin)

PHP

MySQL nebo SQLite

svnmanager.sourceforge.net Archivováno 30. dubna 2011 na Wayback Machine

28.01.2012

1.09

Submin (MIT)

nástroj pro správu úložišť a uživatelů, včetně správy řízení přístupu pro jednotlivé adresáře v úložišti

Krajta

MIT/X Archivováno 6. června 2011 na Wayback Machine

24.12.2012

2.1

cSvn

webové rozhraní pro prohlížení repozitářů Subversion

C

RADIX-1.0

csvn.radix.pro Archivováno 16. března 2022 na Wayback Machine

17. 11. 2020

0.1.3

Poznámky

  1. https://subversion.apache.org/docs/release-notes/release-history.html
  2. Vydán Apache Subversion 1.10.8  – 2022 .
  3. Vydán Apache Subversion 1.14.2  – 2022 .
  4. 1 2 The Subversion Open Source Project on Open Hub: Languages ​​Page - 2006.
  5. https://projects.apache.org/json/projects/subversion.json
  6. 1 2 Open Hub - 2006.
  7. 1 2 https://www.openhub.net/p/subversion/analyses/latest/languages_summary
  8. 1 2 3 4 Adresář svobodného softwaru
  9. http://subversion.tigris.org/license-1.html
  10. Anglické slovo subversion lze přeložit dvěma způsoby – jako „převrácení“ ( podvracení ) a jako „podvracení“ ( podverze )
  11. Podle názvu klientského programu pro příkazový řádek , který je součástí balíčku
  12. Výpis ochranných známek Apache . Získáno 10. října 2015. Archivováno z originálu 7. října 2015.
  13. Funkce Subversion Archivováno 8. dubna 2011 na Wayback Machine 
  14. Rizika distribuované kontroly verzí Archivováno 15. července 2011 na Wayback Machine Ben Collins-   Sussman
  15. CVS je venku, Subversion je v archivu 25. března 2010.  (anglicky) Red Hat magazine, srpen 2005
  16. CVS - sourceforge Archivováno 10. června 2010.
  17. CVS - systém pro správu verzí . Získáno 30. června 2010. Archivováno z originálu 8. července 2010.
  18. ↑ POZOR: Tento víkend přechází repo FreeBSD src na git  . lists.freebsd.org (17. prosince 2020). Staženo 22. prosince 2020. Archivováno z originálu dne 18. prosince 2020.
  19. The Forrester Wave: Software Change and Configuration Management, Q2 2007 (odkaz není dostupný) . Forrester Research . Archivováno z originálu 25. srpna 2011. 
  20. Statistiky soutěže popularity pro bzr, git, git-core, mercurial, subversion . Získáno 24. června 2010. Archivováno z originálu 6. dubna 2014.
  21. Archivovaná kopie . Získáno 24. června 2010. Archivováno z originálu 17. července 2011.
  22. viz http://subversion.apache.org/docs/ Archivováno 17. června 2010 na Wayback Machine  
  23. Ben Collins-Sussman, Brian W. Fitzpatrick & C. Michael Pilato. Kontrola verzí pomocí  Subversion . Získáno 27. listopadu 2019. Archivováno z originálu 8. srpna 2010.
  24. Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato. Kontrola verzí v Subversion . Získáno 27. listopadu 2019. Archivováno z originálu dne 18. listopadu 2019.
  25. Ben Collins-Sussman, Brian W. Fitzpatrick, C. Michael Pilato. Historie Subversion / Kontrola verzí v Subversion (odkaz není k dispozici) (2007). — Pro Subversion 1.4. Získáno 21. července 2010. Archivováno z originálu 25. srpna 2011. 
  26. Changelog Archivováno 18. června 2010 na Wayback Machine 
  27. Goliath Business News Archivováno 5. prosince 2008.
  28. Poznámky k vydání Subversion 1.1 . Získáno 18. června 2010. Archivováno z originálu 17. června 2010.
  29. Poznámky k vydání Subversion 1.2 . Získáno 18. června 2010. Archivováno z originálu 17. června 2010.
  30. Poznámky k vydání Subversion 1.3 . Získáno 19. června 2010. Archivováno z originálu 17. června 2010.
  31. Poznámky k vydání Subversion 1.4 . Získáno 18. června 2010. Archivováno z originálu 17. června 2010.
  32. Poznámky k vydání Subversion 1.5 . Získáno 18. června 2010. Archivováno z originálu 2. července 2016.
  33. Poznámky k vydání Subversion 1.6 . Získáno 18. června 2010. Archivováno z originálu 17. června 2010.
  34. Subversion převedeno pod kontrolu nadace Apache Software Foundation Archivováno 23. února 2010 na Wayback Machine , nixp.ru
  35. Subversion & The Move to the Apache Software Foundation  (downlink) , (video zpráva od prezidenta Subversion Corporation)
  36. Poznámky k vydání Apache Subversion 1.7 . Získáno 12. října 2011. Archivováno z originálu 12. října 2011.
  37. 12 Poznámky k vydání Subversion 1.8 . Získáno 9. července 2013. Archivováno z originálu 10. července 2013.
  38. práce se symbolickými odkazy je podporována pouze v pracovních kopiích v systémech UNIX
  39. 1 2 Větve a značky v Subversion nejsou nezávislou dimenzí úložiště. Podívejte se na klíčové koncepty za větvením archivované 5. října 2015 na Wayback Machine
  40. Pojmy repozitář a repozitář jsou synonyma.
  41. Kapitola 5. Správa úložiště Archivováno 9. listopadu 2017 na Wayback Machine v Subversion Version Control
  42. Operace jsou zde uvedeny z pohledu systému souborů úložiště . V pracovní kopii jsou akce s objekty poněkud odlišné. Jakmile se však změny v pracovní kopii potvrdí, spustí zde popsané akce v úložišti. Například příkaz svn movev pracovní kopii provede operace Ds A+úložištěm.
  43. Struktura projektu C++ využívající Subversion a Mxx_ru Archivováno 19. února 2008 na Wayback Machine .
  44. Ukládání složitých projektů do úložiště a označování více projektů najednou Archivováno 4. srpna 2008 na Wayback Machine .
  45. Větvení mezi soubory v Perforce Archivováno 14. července 2007.
  46. Autorizace na základě cesty . Datum přístupu: 27. května 2008. Archivováno z originálu 7. října 2008.
  47. Typické příklady Archivováno 3. prosince 2008 na Wayback Machine , sekce v Subversion Version Control, verze 1.4
  48. Metoda Bubble-Up Archivována 17. června 2010 na Wayback Machine 
  49. V CVS lze adresář přesunout přímo do úložiště pomocí souborového systému , přičemž soubory v něm neztratí svou historii. Tato úprava však ovlivní všechny revize a větve souborů v tomto adresáři (protože adresáře v CVS vůbec neobsahují informace o verzi).
  50. Subversion FAQ . Získáno 14. dubna 2010. Archivováno z originálu 15. dubna 2010.
  51. Lepší možností může být hacknutí CVS úložiště – přejmenujte adresář přímo na úložiště na serveru
  52. Oblast konfigurace běhového prostředí. Přizpůsobení vaší Subversion Experience (downlink) . Získáno 16. září 2010. Archivováno z originálu 25. srpna 2011. 
  53. Vylepšení související s kopírováním/přesouváním v Subversion 1.5 . Získáno 24. června 2008. Archivováno z originálu 24. června 2008.
  54. Sledování sloučení (základní) . Získáno 24. června 2008. Archivováno z originálu 24. června 2008.
  55. Subversion merge reintegrate Archivováno 31. srpna 2009 na Wayback Machine 
  56. svn vymazat . Získáno 21. července 2008. Archivováno z originálu dne 22. listopadu 2002.

Odkazy