Subversion: Porovnání verzí
mBez shrnutí editace |
|||
| Řádek 1: | Řádek 1: | ||
{{ | {{Programování}} | ||
==Stručný návod pro práci se systémem pro správu verzí Subversion== | ==Stručný návod pro práci se systémem pro správu verzí Subversion== | ||
::Domovská stránka projektu [http://subversion.tigris.org/ SVN]. | ::Domovská stránka projektu [http://subversion.tigris.org/ SVN]. | ||
Verze z 24. 10. 2008, 08:55
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.
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