====== SVN (Apache Subversion) ====== **SVN** (Subversion) je centralizovaný systém správy verzí (**[[VCS]]**). Slouží k ukládání a sledování změn ve zdrojových kódech, dokumentaci a jiných souborech. Na rozdíl od modernějších distribuovaných systémů (jako je Git) sází SVN na model "jednoho centrálního úložiště" (Single Source of Truth). V naší **[[ZIF|digitální architektuře]]** SVN stále využíváme pro údržbu starších (legacy) systémů a pro ukládání velmi rozsáhlých binárních souborů (např. grafické podklady v **[[TIFF]]**), kde je centralizovaná správa výhodnější. ===== Architektura a princip fungování ===== SVN využívá model **Client-Server**: * **Server:** Hostuje centrální databázi (repository) se všemi verzemi souborů. V naší síti běží typicky na **[[VPS]]** s operačním systémem **[[Tux|Linux]]**. * **Klient:** Vývojář si "vytáhne" (Checkout) pracovní kopii souborů na svůj lokální stroj, provede změny a následně je "odevzdá" (Commit) zpět na server. ===== Klíčové operace v SVN ===== * **Checkout:** Stažení nejnovější verze projektu z **[[VPC]]** serveru. * **Update:** Aktualizace lokální kopie o změny, které mezitím provedli kolegové. * **Commit:** Odeslání vlastních změn do centrálního úložiště (vyžaduje zadání popisu změny, který se propisuje do systému **[[Jira]]**). * **Revert:** Vrácení souboru do stavu před úpravami, pokud se objeví chyba. ===== Výhody a nevýhody v kontextu [[ZIF]] ===== ^ Vlastnost ^ Výhoda / Nevýhoda ^ Popis ^ | **Centralizace** | Výhoda | Snadná kontrola přístupových práv přes **[[UID]]**. | | **Zamykání souborů** | Výhoda | Ideální pro binární data (**[[TIFF]]**, PDF), kde nelze automaticky slučovat změny. | | **Závislost na síti** | Nevýhoda | Pro commit nebo prohlížení historie je nutné připojení k **[[WAN]]**. | | **Rychlost** | Nevýhoda | Operace s historií jsou pomalejší než u distribuovaných systémů. | ===== Bezpečnost a správa ===== V rámci **[[Kybernetická bezpečnost|kybernetické bezpečnosti]]** uplatňujeme pro SVN tato pravidla: * **Šifrování:** Přístup k SVN je povolen výhradně přes protokol HTTPS (využívající **[[TLS]]**) nebo skrze tunel **[[SSH]]**. * **Zálohování:** Centrální repository je každodenně zálohováno, aby nedošlo ke ztrátě historie vývoje. * **Audit:** Každý commit je logován a musí být spárován s existujícím úkolem v systému **[[Jira]]**. > **Doporučení pro vývojáře:** Pokud začínáte nový projekt, který se skládá primárně z textových zdrojových kódů, zvažte použití Gitu. SVN používejte pouze v případě, že pracujete na stávajícím projektu nebo potřebujete spravovat objemná data, která by zpomalovala distribuované systémy. --- **Související stránky:** [[ZIF]], [[VCS]], [[Vývojový tým]], [[VPS]], [[Tux]], [[VPC]], [[WAN]], [[UID]], [[TLS]], [[SSH]], [[Jira]], [[TIFF]]