Vytvoříme adresář pro repozitory např. c:/rep a v něm adresář pro projekt např. rep_test a na adresáři přes pravé tlačítko se dostaneme do menu TSVN, kde před volbu Vytvořit repozitory zde (Create repozitory here) vytvoříme repozitory jak ukazuje obrázek. Po úspěšném vytvoření repozitory si můžeme prohlédnout adresář a uvidíme soubory co vytvořil Subversion.

Struktura repozitory je na dalším výpisu. V adresáři conf/ jsou konfigurační soubory pro přístup k repozitory, v adresáři db/ jsou uložená data a souboru current je aktuální revize. V adresáři hooks/ jsou šablony pro hooks skripty, které umožňují vykonat nějakou akci před určitou akcí v Subversion.
conf/ authz passwd svnserve.conf db/ .. current .. hooks/ post-commit.tmpl post-lock.tmpl post-revprop-change.tmpl post-unlock.tmpl pre-commit.tmpl pre-lock.tmpl pre-revprop-change.tmpl pre-unlock.tmpl start-commit.tmpl locks/ format README.txt
Po vytvoření repozitory je dobré otevřít repozitory browser a vytvořit základní strukturu pomocí přímaku vytvořit adresář "create folder".

V repozitory můžete vytvořit vlastní adresáře, ale doporučuje se nejdříve vytvořit strukturu do které naimportujete svoje adresáře.
Struktura slouží k tomu, abychom vedli hlavní kmen projektu (trunk) a mohli také vést větve (branches) a dělat nálepky (tags) pro určité vydané verze.

Pokud už máme něco co chceme do repozitory importovat uděláme to pomocí příkazu import. Jinak můžeme tento krok přeskočit, protože strukturu můžeme vytvořit pomocí repozitory browseru.
Ve stručnosti zopakuji stejné postupy jako ve TSVN.
Vytvoříme repozitory
svnadmin create --fs-type fsfs c:/rep/rep_test
Rozdíl mezi Windows a Linuxem je jen ve způsobu zadávání cesty k repozitory. Obdobně to můžete aplikovat na všechny příklady. SVN se ve funkčnosti mezi Windows a Linuxem nijak neliší.
svnadmin create --fs-type fsfs /srv/svn/rep_test
V řádkovém klientu nemůžeme vytvořit adresáře přímo, ale uděláme je rovnou při prvním importu souborů, tento postup lze použít i přes TSVN.
cd c:/tmp mkdir test cd test mkdir trunk mkdir tags mkdir branches svn import --message "Initial import" file:///C:/rep/rep_test
Potom vytvoříme pracovní kopii
svn checkout file:///C:/rep/rep_test/trunk c:/wc/test
Nejdříve si aktualizujte svoji pracovní kopii.
svn update
nebo
svn up
Skoro každý příkaz má zkratku, která se hodí aby jste to nemuseli rozepisovat. Stačí se podívat na svn help a uvidíte je.
Potom vytvoříte nové soubory, smažete staré soubory, změníte obsah. Pomocí příkazu svn diff si ověříte můžete zobrazit změny své pracovní kopie proti verzi v repozitory.
svn diff
Pokud jste pracovali s pracovní kopii a přidávali nebo mazali soubory, je dobré vědět zda jsou již přidané či v jakém stavu jsou to zjistíme pomocí svn status a potom můžeme chybějící soubory např. pomocí svn add přidat.
svn status
Změny odešlete je pomocí commitu do repozitory.
svn commit -m "Text zprávy"
Postup se opakuje, jen update nemusíte dávat pokaždé pokud jste si jistý, že nikdo s repozitory mezitím nepracoval. Případně můžete zamknout repozitory během práce na změnách. Pokud nenastane konflikt vystačíte si s tímto jednoduchým postupem. Pokud dojde ke konfliktu můžete změny spojit (merge) nebo svoje vrátit pomocí svn revert.
Pokud by vám vadí adresáře, které svn vytváří automaticky a uchovává v nich svoje informace, tak těch se zbavíte pomocí exportu.
Pokud chcete do aktuálního adresáře všechny soubory vyexportovat stačí zadat tento příkaz a soubory se tam uloží. Dá se také pracovat s pracovní kopii nebo zadávat i cestu pro export.
svn export file:///C:/rep/rep_test/trunk
Příklad exportního skriptu v shellu linux pro export projektu. Exportuje se poslední revize, a vytvoří se kromě exportu i balík označený revizí a datumem vytvoření.
# path to export files EXPORTPATH=/home/user/export/projekt # url of repository REPOS=file:///home/user/repos/projekt/trunk/ # path to repository REPOSPATH=/home/user/repos/projekt/ # last revision REV="$( svnlook youngest $REPOSPATH )" # make export path mkdir -p $EXPORTPATH # svn force export (nothing to screen) svn export --force $REPOS $EXPORTPATH >> /dev/null cd $EXPORTPATH cd .. # make tar.gz file for projekt tar -czvf projekt-R$REV-`date +%Y%m%d-%H%M%S`.tgz projekt >> /dev/null
Pokud budete chtít vyexportovat jen soubory co se změnili v poslední revizi bude to trochu složitější a budete potřebovat tento skript.
# path to export files
EXPORTPATH=/tmp/test/
# url of repository
REPOS=file:///home/user/repos/projekt/
# path to repository
REPOSPATH=/home/user/repos/projekt/
# last revision
REV="$( svnlook youngest $REPOSPATH )"
# function to list and export file by file
pathexport() # $1
{
mkdir -p $EXPORTPATH${2%/*}
svn export --force $1$2 $EXPORTPATH$2
}
# make export path
mkdir -p $EXPORTPATH
# list all changed files
for i in $( svnlook changed -r $REV $REPOSPATH ); do
if [ "${#i}" -gt "2" ]
then pathexport $REPOS $i
fi
done
