Repozitář (verzování)
Repozitář (anglicky repository) je takové datové úložiště verzovacího systému, ze kterého je standardním způsobem (způsobem předepsaným daným verzovacím systémem) možné vytvářet další úložiště, jinými slovy jeho obsah klonovat; tím se odlišuje od tzv. pracovní kopie (anglicky working copy), jež duplikaci nepřipouští.
Obecně lze repozitář chápat jako vysoce specializovaný souborový systém, jehož neodmyslitelnou funkcí je poskytování detailních informací o jednotlivých změnách, i neomezeně hluboko do minulosti, a zastřešování souběžně předkládaných změn ve více souborech jedním identifikátorem. V obecném pojetí repozitáře podporují stromovou strukturu zařazení souborů a vnější reprezentací dat se velice blíží skutečným souborovým systémům.
Nad obvyklé možnosti souborových systémů repozitáře zpravidla nabízejí možnost souborům přidělovat zvláštní atributy, jež mohou ovlivňovat zacházení se soubory při základních verzovacích operacích (check out
, update
, commit
). Vývojářům tato vymoženost může být k užitku např. tehdy, když nějaká entita ukládá pomocné (dočasné) soubory do adresáře se soubory se zdrojovými kódy projektu. Značkovat bývá možné i operace commit
.
Na rozdíl od pracovních kopií repozitáře nemusí fyzicky uchovávat aktuální (poslední) verzi souboru, ale jen jeho první revizi a všechny (následné) změny, vyjádřené inkrementálně (diferenciálně); to zjednodušuje implementaci ukládání dat repozitáře, zejména v případě textových souborů. V porovnání se souborovými systémy u repozitářů verzovacích systémů není tak důležitá rychlost přístupu k datům.
Novější verzovací systémy (kupř. systém git) umožňují, aby každý soubor byl aktuální ve více podobách, tzv. větvích (anglicky branches), současně. Větev je potom vlastností (parametrem) každé operace commit
.
Typy repozitářů
editovatRepozitáře lze hrubě rozdělit na ty, které umožňují přímý přístup uživatele (prostřednictvím souborového systému), a ty, k jejichž datům lze řádně přistupovat jedině skrze nad nimi operující serverové aplikace. První případ je charakteristický pro centralizované verzování, druhý pro distribuované.
S výše uvedenou klasifikací souvisí fakt, zda je repozitář zároveň pracovní kopií. Pracovní kopie, která principielně může být obrazem celého obsahu repozitáře i jen některé jeho části (přesněji řečeno podadresáře libovolné úrovně v hierarchické struktuře), musí dovolovat přímou manipulaci s úplnou podobou souboru v uživatelem požadované verzi (jinak by nebylo možné provádět úpravy ve zdrojových kódech běžnými textovými editory). Repozitář a pracovní kopie v jedné sadě souborů je vlastní decentralizovaným (distribuovaným) verzovacím architekturám.
Vnitřní organizace dat
editovatVerzovacích systémy jako takové i jejich vlastní verze se liší ve způsobech organizace obsahu repozitářů. V principu lze data rozprostírat do adresářové struktury souborového systému, všechna soustředit v jednom souboru (ve smyslu stránkovacího souboru), nebo k jejich uložení využít (externí) systém řízení báze dat.
Příkladem verzovacího systému, který ve věci vnitřní organizace obsahu repozitáře prodělal velkou změnu, je Apache Subversion. Tento systém byl převeden z databázového rozhraní do uchovávání dat v podobě jednotlivých souborů v souborovém systému.
Reprezentace dat podle zamýšleného obsahu
editovatData podléhající správě verzí lze obecně rozdělit na textová a binární; binárními zde nejsou myšleny zkompilované zdrojové kódy, jež do repozitářů nepatří, nýbrž multimediální data, lépe řečeno data, změny v jejichž obsahu nemá smysl vyznačovat v textovém editoru. V zájmu optimalizace pak vývojový tým může zřídit jeden repozitář pro zdrojové kódy a dokumentaci, popř. významné chybové reporty, a druhý pro obrázky, zvukové a obrazové záznamy a jiná binární data; předpokladem je, že tuto dopřednou klasifikaci obsahu verzovací systém podporuje.