U nás ve firmě používáme program Subversion. Chtěl bych vám popsat několik výhod, které nás vedly k jeho použití namísto zatím běžnějšího CVS.
- bezpečný síťový přístup i při zápisu – pro šifrovaný spojení k CVS musíte použít tunelování přes ssh a je tedy nutné, aby uživatelé měli konzolový přístup. Rozchodit takové řešení z windows lze, ale není nejsnadnější.
- omezení přístupu – pokud chcete omezit přístup některým uživatelům nebo zamknout větev (branch) pro zápis, musíte „opatchovat“ CVS. U SVN můžete použít integrované ACL
- hooky – volání akcí (hooků) je jasně definované a vždy běží pod stejným uživatelem jako běží server. U CVS jsme s tím občas měli problémy.
- výpis větví a tagů – je možné se podívat na seznam větví a je dále je i strukturovat. U CVS se musíte dotazovat na soubor, který byl ve všech verzích (a přesto nemusí obsahovat některé značky a větve) a nebo používat externí nástroje jako je např. CVSQuery.
- commity jsou atomické – commity se uloží celé a nebo vůbec. Je možné snadno získat seznam zněnených souborů při commitu.
- TortoiseSVN – jedná se o klienta integrovaného do windows. Ten je tak snadný na používání, že jej používá i naše obchodní oddělení a všechny dokumenty tak ukládá do SVN.
- offline přístup – i když nejste připojeni k síti, můžete zjišťovat seznam změněných souborů, seznam změn (diff) nebo se vrátit k verzi v repository.
- jednodušší mergování – aby jste mohli mergovat u CVS, musíte vytvořit nejen větev (branch) ale i značku (tag). To vám umožňí pozdější sloučení změn zpět. Navíc před a po každém mergování je potřeba udělat další dvě značky – jedině tak můžete dohledat seznam namergovaných změn. U SVN nic takového dělat nemusíte. Jasně vídíte, kdy byla větev vytvořena a také seznam změn, které byly udělány při merge.
Děláme jen jednu věc – při commitu namergovaných změn přidáváme komentář „merge -r 1000:2000“ (1000 až 2000 jsou čísla verzí, které mergujete). Do příštích verzí svn slibují i lepší podporu mergování (např. automatické sledování sloučených změn)
- použítí WebDAVu – toto je jedna z méně důležitých přesto příjemných věcí. Někteří naši zákazníci neví co to repository je. Stačí jim webový přístup k souborům v SVN. Někteří ovšem SVN používají. Pro obě tyto skupiny můžeme používat stejné URL.
- modularita ověřování – protože SVN umí fungovat přes apache, je možné využít všechny ověřovací metody, které apache podporuje. Takže můžete ověřovat oproti passwd, LDAPu, kerberovi, databázi, … Můžete si tak sjednotit ověřování a přístup ke všem podpůrným prostředkům pro vývoj ve vaší firmě.
Jako další podpůrné nástroje používáme WebSVN, ViewSVN a vlastní „hooky“ pro propojení s bug tracking systémem.
Toto jsou mé hlavní důvody proč používat SVN.
K tomu WebDAVu jsi mohl ještě dopsat, že pro naprosté BFU je možné rozchodit verzování, aniž by o něm věděli, prostě tím, že na WebDAV zapíšou, což dneska umí Windows i operační systémy.
Mezi nevýhody Subversion je možno započítat i způsob číslování verzí: čísluje zásadně změny v celém repository, tj. každá změna zvýší číslo celku. Díky tomu se velmi špatně orientuje ve verzích jednotlivých souborů (řada není 1.1, 1.2, 1.3, … 1.567 jako u CVS, ale 207, 765, 768, 1251 – z čísla aktuální revize nemáte šanci poznat číslo předchozí revize). Aby to nebylo málo, zvrhlý způsob číslování byl použit i napříč všemi větvemi repository – změna v libovolné větvi či trunku znamená změnu čísla verze všech verzí. Nejen, že z čísla verze nepoznáte o větvi vůbec nic, ale ještě se neustále mění, i když je větev dávno u ledu.
Myslim ze cislovani neni zas tak nevyhodny co se tyce verzi jednotlivych souboru.
pokud pouzijes svn log –verbose tvuj_soubor.xxx tak presne vidis jeho historii a pouze jeho predchozi verze
Pokud to ma clovek dobre rozmysleny a ma v projektu poradek tak je to podle me vyhodnejsi nez CVS pristup.
CVS pouzivam uz par let a pristup SVN se mi zda z pozice administracni jednodussi. I kdyz se SVN nemam zas takove zkusenosti. Zrovna jsem dostal za ukol ho vyzkouset a zvazit moznost migrovat z CVS na SVN
SVN verzovani neni o nic zvrhlejsi, nez CVS verzovani :-). V CVS mas sice perfektni prehled, jake verze ma jeden soubor, ale verzovani celku musis resit tagy. Kdyz zabehnes do vetvi, verzovani souboru zacina byt take magie, protoze CVS micha verze souboru a vetveni, zatimco v SVN je vetveni reseno umistenim (cestou), takze verze skutecne nese pouze jedinou informaci.
V SVN si navic muzes byt jist, ze verze nejakeho stromu je rovna nejvyssi verzi vsech jeho soucasti, takze verze (revize) celku jsou snadno zjistitelne. Osobne se mi tento pristup libi mnohem vice.