Subversion: Porovnání verzí
m →Instalace: odkazy na debian a ubuntu |
|||
Řádek 23: | Řádek 23: | ||
* aktualizace pracovní kopie | * aktualizace pracovní kopie | ||
<pre>svn update</pre> | <pre>svn update</pre> | ||
* změny v pracovní kopii | * 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 '''<code>svn add novy_soubor</code>'''. Nový adresář je také nutné přidat příkazem '''<code>svn add novy_adresar</code>''', nebo ho už vytvořit příkazem '''<code>svn mkdir novy_adresar</code>'''. Soubory není možné jednoduše z pracovní kopie vymazat příkazem '''<code>rm soubor</code>''', musí se k tomu použít příkaz '''<code>svn rm soubor</code>'''. | ||
svn add soubor # přidání souboru nebo adresáře - implicitně včetně podadresářů - do pracovní kopie | svn add soubor # přidání souboru nebo adresáře - implicitně včetně podadresářů - do pracovní kopie | ||
svn rm soubor # vymazání souboru | svn rm soubor # vymazání souboru | ||
Řádek 30: | Řádek 30: | ||
svn move soubor # přesun souboru nebo adresáře | svn move soubor # přesun souboru nebo adresáře | ||
* zjištění změn v pracovní kopii | * zjištění změn v pracovní kopii | ||
svn status # | svn status # vypisuje změny pracovní kopie vzhledem k aktuální revizi pracovní kopie - nezjišťuje aktuální stav v repozitáře | ||
# -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 | # A - soubor je přidán do pracovní kopie | ||
# D - soubor je vymazán z pracovní kopie | # D - soubor je vymazán z pracovní kopie | ||
# M - soubor je změměn | # M - soubor je změměn | ||
# C - soubor je v konfliktu (soubor byl modifikován a současně je v repozitáři novější | # 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 | # 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 | svn diff soubor # výpis změn v obsahu konkrétního souboru | ||
* zahození provedených změn v pracovní kopii | * zahození provedených změn v pracovní kopii | ||
Řádek 48: | Řádek 52: | ||
# proměnná SVN_EDITOR nebo EDITOR určuje jaký editor bude spuštěn pro editaci zprávy | # 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 | # 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ů==== | ==== Ř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. | Konfliktům můžeme předcházet používáním příkazu svn status -u. | ||
Typy konfliktů: | Typy konfliktů: |
Verze z 24. 10. 2008, 07:41
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í souboru 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 aktuální revizi pracovní kopie - nezjišťuje aktuální stav v repozitáře # -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
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
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