Subversion: Porovnání verzí
→Instalace: ms windows |
|||
Řádek 7: | Řádek 7: | ||
Základní klient (voláme z příkazové řádky jako "svn") pro přístup a využívání služeb SVN je pro distribuce [http://debian.org Debian GNU/Linux] a [http://www.ubuntu.cz Ubuntu] obsažen v balíčku [http://packages.debian.org/etch/subversion subversion]. | Základní klient (voláme z příkazové řádky jako "svn") pro přístup a využívání služeb SVN je pro distribuce [http://debian.org Debian GNU/Linux] a [http://www.ubuntu.cz Ubuntu] obsažen v balíčku [http://packages.debian.org/etch/subversion subversion]. | ||
=== MS Windows === | |||
Základní klient je dostupný [http://subversion.tigris.org/getting.html#windows zde]. Existuje také několik GUI či zásuvných modulů, např. pro Průzkumníka. Společnost tigris.org vyvíjí vlastní GUI s názvem [http://rapidsvn.tigris.org/ rapidsvn]. | |||
===Základní použití=== | ===Základní použití=== |
Verze z 4. 11. 2008, 11:40
Stručný návod pro práci se systémem pro správu verzí Subversion
- Domovská stránka projektu SVN.
- Literatura: Version Control with Subversion.
Instalace
Základní klient (voláme z příkazové řádky jako "svn") pro přístup a využívání služeb SVN je pro distribuce Debian GNU/Linux a Ubuntu obsažen v balíčku subversion.
MS Windows
Základní klient je dostupný zde. Existuje také několik GUI či zásuvných modulů, např. pro Průzkumníka. Společnost tigris.org vyvíjí vlastní GUI s názvem rapidsvn.
Základní použití
- Vytvoření repositáře
svnadmin create cesta/k/repositari/repositar
- Import dat do repositáře
svn import muj_adresar file:///cesta/k/repozitari/repozitar -m "Import dat"
- Výpis obsahu repositáře
svn list file:///cesta/k/repozitari/repozitar
- Získání pracovní kopie repozitáře
svn checkout file:///cesta/k/repozitari/repozitar # repozitář je na lokálním počítači svn checkout svn+ssh://server.domena.cz/cesta/k/repozitari/repozitar # přístup k repozitáři přes svn server # a šifrované připojení ssh
Základní pracovní cyklus
- aktualizace pracovní kopie
svn update
- změny v pracovní kopii: Nově vytvořený soubor v pracovním adresáři není automaticky přidán do pracovní kopie. Nový soubor se zařadí do pracovní kopie až provedením příkazu
svn add novy_soubor
. Nový adresář je také nutné přidat příkazemsvn add novy_adresar
, nebo ho už vytvořit příkazemsvn mkdir novy_adresar
. Soubory není možné jednoduše z pracovní kopie vymazat příkazemrm soubor
, musí se k tomu použít příkazsvn rm soubor
.
svn add soubor # přidání souboru nebo adresáře - implicitně včetně podadresářů - do pracovní kopie svn rm soubor # vymazání nemodifikovaného souboru nebo adresáře # soubor se okamžitě odstraní z pracovní kopie, # adresář, který není prázdný, se neodstraní, ale označní pro vymazání - k odstranění # dojde až po provedení přikazu commit # --force : vymaže modifikovaný i soubor který není ve správě subversion svn rmdir adresar # vymazání adresáře svn copy soubor # kopírování souboru nebo adresáře svn move soubor # přesun souboru nebo adresáře
- zjištění změn v pracovní kopii
svn status # vypisuje změny pracovní kopie vzhledem k revizi pracovní kopie uložené v adresáři .svn # nezjišťuje aktuální stav v repozitáři # -v : podrobnější výpis # -u : provede porovnání z repozitářem a hvězdičkou označí soubory změněné v repozitáři i v # pracovní kopii, tedy soubory u nichž by po provedeni příkazu update nastal konflikt # A - soubor je přidán do pracovní kopie # D - soubor je vymazán z pracovní kopie # M - soubor je změměn # C - soubor je v konfliktu (soubor byl modifikován a současně je v repozitáři novější # verze tohoto souboru) # L - soubor je uzamčen (např při nedokončení aktualizace pracovní kopie - spusťte # příkaz svn cleanup # ? - soubor není ve správě subversion svn diff soubor # výpis změn v obsahu konkrétního souboru
- zahození provedených změn v pracovní kopii: příkaz obnový soubor podle stavu v revizi pracovní kopie (z adresáře .svn)
svn revert soubor
- řešení konfliktů, přijetí změn z repositáře
svn update svn resolved soubor
- publikování změn do repozitáře: Každým zveřejněním změn se zvyšuje číslo podlední revize všech souborů v repozitáři o jedničku. To znamená, že jeden soubor může být v revizi číslo 10 vytvořen, v revizích 11 až 35 beze změny a modifikován až v revizi 36. Revize 11 až 35 se bude týkat modifikace jiných souborů v repozitáři.
svn commit # -m 'zprava zveřejnění změn' # proměnná SVN_EDITOR nebo EDITOR určuje jaký editor bude spuštěn pro editaci zprávy # pokud není zadána pomocí parametru -m
- export souborů z repozitáře (adresářový strom bez adresářů .svn)
svn export svn+ssh://server.domena.cz/cesta/k/repozitari/repozitar adresar_pro_export # -r cislo revize svn export file:///cesta/k/repozitari/repozitar adresar_pro_export svn export adresar_pracovni_kopie adresar_pro_export
Řešení konfliktů
Konflikt verzí nastává tehdy, pokud byl soubor, který je v pracovní kopii v repozitáři změněn jiným uživatelem. Konfliktům můžeme předcházet používáním příkazu svn status -u. Typy konfliktů:
- U - soubor neobsahuje lokální změny, ale byl změněn v repozitáři
- G - lokálně změněný soubor byl změněn také v repositáři, ale změny se nepřekrývají a bylo automaticky provedeno sloučení
- C - konflikt, který je nutné vyřešit editací (ručně): V tomto případě svn vytvoří soubory
soubor.txt.mine # midifikovaný soubor pracovní kopie soubor.txt.r8 # soubor v revizi pracovní kopie soubor.txt.r9 # soubor v revizi repozitáře (HEAD revision) soubor.txt # soubor, kde jsou obě verze, ovšem nesloučené
Historie revizí
svn log # parametrem -r 8 nebo -r 1:8 udáváme číslo revize svn cat -r 8 # vypisuje obsah souboru z revize 8 svn list -r 8 # vypisuje obsah aktualního adresáře takový, jaký byl v revizi 8