Platon Technologies
neprihlásený Prihlásiť Registrácia
SlovakEnglish
open source software development oslavujeme 10 rokov vývoja otvoreného softvéru! Pondelok, 16. jún 2025

Súbor: [Platon] / platos / prednasky / Lugcon / 13-CVS-and-SVN-comparison-content.tex (stiahnutie)

Revízia 1.15, Sun Nov 13 19:17:02 2005 UTC (19 years, 7 months ago) by rajo


Zmeny od 1.14: +2 -2 [lines]

Fixed typos.

%
% This file is included by 'slides.tex' and 'preview.tex'
%
\usepackage {uvodzovky}
\usepackage {wasysym}
\usepackage {platonsdg-core}

% pocitadlo casu prednasky:
\def\TIMING#1#2{%
\newlinechar`\^^J % prinutime ho oddelovat spravy novym riadkom
\message{^^JTIMING: #1 #2^^J}
}

\def\cvscmd#1{\texttt{\blue #1}}
\def\svncmd#1{\texttt{\magenta #1}}
\def\cmdbreak{$\mathtt{\backslash}$\\\strut{}~~~~}
\def\file#1{\texttt{#1}}

\hyphenation{
cen-trál-nom
}

% zavadenie bezpatkoveho pisma pre folie
%\renewcommand{\rmdefault}{cmss}
%\slidesmag{4}

%
% Macros and other stuff /*

% 6 - To allow automatic changes of language dependant labels,
%     for instance by loading french.sty after Seminar
%     (suggested by Bernard Gaulle (IDRIS) - <gaulle@idris.fr> - Nov. 20, 1997)
% Modification Denis Girou begin - Nov. 20, 1997
% From seminar.cls
\def\slidename{Slide}% /*
\def\slidelabel{\bf\slidename{} \theslide}
% From slidesec.sty
\def\listslidename{Zoznam fólií}%
\makeatletter
\def\listofslides{\section*{\listslidename%
\@mkboth{\expandafter\MakeUppercase\listslidename}%
        {\expandafter\MakeUppercase\listslidename}}%
  \def\l@slide##1##2##3{%
    \slide@undottedcline{\slidenumberline{##3}{##2}}{}}%
  \let\l@subslide\l@slide
  \@startlos}
\makeatother% */
% Modification Denis Girou end

% cumulative slides: 
% For overlays, to force to print all preceding ones
\makeatletter% /*
\def\pst@initoverlay#1{%
\pst@Verb{%
/BeginOL {dup (all) eq exch TheOL le or {IfVisible not {Visible
/IfVisible true def} if} {IfVisible {Invisible /IfVisible false def} if}
ifelse} def
\tx@InitOL /TheOL (#1) def}}
\makeatother% */

\definecolor{LightLightGray}{gray}{0.98}
\definecolor{LightGray}{gray}{0.75}

\def\vimconfig#1{\texttt{vimconfig#1}}
\def\shellexample#1{\codeexample{#1}{shell}}
\def\vimexample#1{\codeexample{#1}{Vim}}
\def\vimkey#1{\texttt{\blue#1}}
%\def\Vim#1{Vim#1}

\newsavebox{\linka}
\savebox{\linka}{\textcolor{LightGray}{http://www.platon.sk}}
\newlength{\mylength}
\def\codeexample#1#2{% /*
\[
    \setlength{\fboxsep}{8pt}
    \setlength{\mylength}{0.7\linewidth}
    \addtolength{\mylength}{-2\fboxsep}
    \addtolength{\mylength}{-2\fboxrule}
    {\boxput(0.83,-1.0){\textcolor{LightGray}{#2}\vspace{1em}{}\strut}{%
    \fbox{%
        \parbox{\mylength}{
            \setlength{\abovedisplayskip}{0pt}
            \setlength{\belowdisplayskip}{0pt}
                \texttt{\blue#1}
            }}
        }}
\]
} % */

\newpagestyle{Lugcon}{}{\strut\hspace{0.6cm}Slide: \thepage\hfil%
        \raisebox{0pt}[0pt][0pt]{\usebox{\linka}\hspace{0.5cm}\strut}
}


% vypis jednotiek: /*
{\newlinechar`\^^J % prinutime ho oddelovat spravy novym riadkom
\message{^^J^^J}
\message{Nastavenie rozmerov:^^J}
\message{---------------------------^^J}
\message{voffset          = \the\voffset^^J}
\message{hoffset          = \the\hoffset^^J}
\message{textwidth        = \the\textwidth^^J}
\message{textheight       = \the\textheight^^J}
\message{oddsidemargin    = \the\oddsidemargin^^J}
\message{evensidemargin   = \the\evensidemargin^^J}
\message{topmargin        = \the\topmargin^^J}
\message{unitlength       = \the\unitlength^^J}
\message{parindent        = \the\parindent^^J}
\message{parskip          = \the\parskip^^J}
\message{abovecaptionskip = \the\abovecaptionskip^^J}
\message{belowcaptionskip = \the\belowcaptionskip^^J}
\message{---------------------------^^J^^J}
}% */

%
% End of macros */
%

%
% Ostylovanie prednasky:
%  - v strede velky sivucky napis "Vim"
%  - vpravo dole sivy napis s linkou na vimconfig
\setlength{\slideframewidth}{1pt}% /*
\def\bgtext{}% na prvom slide nebude logo Vim
\newslideframe{Platon}{%
    \boxput(0,0){%
        \scalebox{10.0}{\textcolor{LightGray}{\expandafter\bgtext}}%
    }{%
        %\boxput(0.5,-1){%
            %\rput{0}{\usebox{\linka}}
        %}{%
            #1%
            %\usebox{\linka}
        %}%
    }%
} % */
\slideframe{Platon}
%\slideframe*{scplain}
\slideframe*{shadow}


\centerslidesfalse

\begin{document}

\title{Porovnanie CVS a Subversion}

\pagestyle{empty}

% UVOD /*
\begin{slide}
    \begin{center}
        \strut{}\vfill
        {\huge Porovnanie CVS a Subversion\\}
        \strut{}\strut\\
        {\large Mgr. Ľubomír  Host}\\
        \texttt{\footnotesize <rajo AT platon.sk>} \\
        \texttt{\footnotesize http://rajo.platon.sk} \\
        \strut{}\strut\\
        {\large Združenie Platón}\\
        {\footnotesize nezisková organizácia na podporu otvoreného softvéru} \\
        \texttt{\blue http://www.platon.sk}\\
        \vfill{}\strut
    \end{center}
\end{slide}

%\def\bgtext{Platon}% zapneme logo "Platon" na pozadi slajdov
\pagestyle{Lugcon}% a hodime cislo slajdu + linku na vimconfig do paty stranky

\begin{slide}
    \slideheading{Osnova prednášky}
    \begin{itemize}
        \item \overlay{0}{čo to je CVS a Subversion}
        \item \overlay{1}{načo to je dobré}
        \item \overlay{2}{výhody a nevýhody}
        \item \overlay{3}{ako si to spojazdniť}
        \item \overlay{4}{praktické použitie}
    \end{itemize}
\end{slide}
\TIMING{1}{min}

\begin{slide}
    \slideheading{Čo to je CVS a Subversion}
    \begin{itemize}
        \item \overlay{0}{Version Control System -- systém na správu verzií, resp. SCM systems}
        \item \overlay{1}{umožňuje archivovať vývojové a~produkčné verzie projektov (označovanie míľnikov, tzv.
            releases/milestones)}
        \item \overlay{2}{spolupráca viacerých ľudí na spoločnom projekte}
        \item \overlay{3}{predstaviť si to možno ako \textbf{centrálne úložisko pre vaše projekty}}
        \item \overlay{4}{zjednodušenie procesu zálohovania}
    \end{itemize}
\end{slide}
\TIMING{3}{min}

\begin{slide}
    \slideheading{Rozdielny štýl práce}
    \begin{itemize}
        \item \overlay{0}{konečne je definované, ktorá verzia je aktuálna: \textbf{tá v centrálnom úložisku (Repository)}}
        \item \overlay{1}{je v podstate jedno, ktorý systém používate; doležité je, aby vám uľahčoval prácu}
    \end{itemize}
\end{slide}
\TIMING{2}{min}

\begin{slide}
    \slideheading{Starý štýl práce}
    \begin{enumerate}
        \item \overlay{0}{idem pracovať na projekte}
        \item \overlay{1}{vezmem nejakú verziu, začnem upravovať}
        \item \overlay{2}{otestujem svoje zmeny}
        \item \overlay{3}{spomeniem si, kde som spravil zmeny}
        \item \overlay{4}{spravím zálohu ostrej verzie}
        \item \overlay{5}{nové verzie súborov nakopírujem do ostrej verzie}
        \item \overlay{6}{skontrolujem, či moje zmeny v ostrej verzii fungujú}
        \item \overlay{7}{pomýlil som sa a moja práca je preč!}    
    \end{enumerate}
\end{slide}
\TIMING{4}{min}

\begin{slide}
    \slideheading{Problémy}
    \begin{itemize}
        \item \overlay{0}{začleňovanie mojich zmien do ostrej verzie}
        \item \overlay{1}{nekonzistentný stav ostrej verzie počas začleňovania zmien}
        \item \overlay{2}{ťažkopádna spolupráca viacerých ľudí na jednom projekte}
        \item \overlay{3}{problematické zlučovanie zmien z rôznych verzií}
        \item \overlay{4}{problém so skladovaním rôznych verzií}
        \item \overlay{5}{zložité zálohovanie}
    \end{itemize}
\end{slide}
\TIMING{3}{min}

% end UVOD */

\begin{slide}
    %\slideheading{}
    {}\strut\vfill
    \hfill\textbf{\Huge Dosť bolo BORDELU!!!}\hfill\strut{}
    \vfill
\end{slide}
\TIMING{0}{min}

% novy styl prace/*
\begin{slide}
    \slideheading{Nový štýl práce}
    \begin{itemize}
        \item \overlay{0}{začneme založením úložiska pre naše projekty}
        \item \overlay{1}{pridáme projekt do CVS / SVN}
        \item \overlay{2}{upravíme projekt}
        \item \overlay{3}{zaznamenáme zmenu}
        \item \overlay{4}{zaktualizujeme ostrú verziu}
        \item \overlay{5}{pozrieme si staršie verzie projektov}
        \item \overlay{6}{ukážeme si spoluprácu viacerých vývojárov}
    \end{itemize}
\end{slide}
\TIMING{1}{min}
% */

% zalozenie uloziska /*
\begin{slide}
    \slideheading{Založenie úložiska}
    \begin{itemize}
        \item \overlay{0}{\cvscmd{cvs -d \~{}/cvs\_root init}}
        \item \overlay{1}{\svncmd{svnadmin create --fs-type fsfs \~{}/svn\_root}}
        \item \overlay{2}{\svncmd{svnadmin create --fs-type bdb \~{}/svn\_root}}
%        \item \overlay{2}{
%\begin{verbatim}
%/home/lugcon/svn_root/
%|-- db
%|   |-- DB_CONFIG
%|   |-- __db.001
%...
%|   |-- __db.005
%|   |-- fs-type
%|   |-- log.0000000001
%...
%\end{verbatim}
%}
    \end{itemize}
\end{slide}
\TIMING{2}{min}
% */

% struktura uloziska /*
\begin{slide}
    \slideheading{Štruktúra úložiska}
    \overlay{0}{\textbf{CVS}}
    \begin{itemize}
        \item \overlay{1}{jeden súbor v úložisku = jeden súbor v projekte}
        \item \overlay{2}{v úložisku sa možno jednoducho prehrabávať}
        \item \overlay{3}{konfigurácia CVS je v projekte CVSROOT -- problémy so zabezpečením servera}
    \end{itemize}

    \overlay{4}{\textbf{SVN}}
    \begin{itemize}
        \item \overlay{5}{dva súbory v úložisku = jedna revízia projektu}
        \item \overlay{6}{na prehrabávanie sa v SVN úložisku máme príkaz \\ \svncmd{svnlook tree \~{}/svn\_root }}
    \end{itemize}
\end{slide}
\TIMING{3}{min}
 % */

% navr struktury projektov - CVS /*
\begin{slide}
    \slideheading{Návrh štruktúry projektov pre CVS}
    \overlay{0}{\textbf{Príprava projektu a~pridanie do CVS:}} \\
    \begin{enumerate}
        \item \overlay{1}{\cvscmd{export CVSROOT=:local:/home/lugcon/cvs\_root}}
        \item \overlay{2}{\cvscmd{cd \~{}/work/c-project}}
        \item \overlay{3}{\cvscmd{cvs import -m 'Import projektu do CVS'
            \cmdbreak{}c-project rajo start}}
        \item \overlay{4}{\cvscmd{cd ..}}
        \item \overlay{5}{\cvscmd{mv c-project c-project.bak}}
        \item \overlay{6}{\cvscmd{cvs checkout c-project}}
    \end{enumerate}
\end{slide}
\TIMING{2}{min}
% */

% navr struktury projektov - SVN /*
\begin{slide}
    \slideheading{Návrh štruktúry projektov pre SVN}
    \overlay{0}{\textbf{Príprava projektu a~pridanie do SVN:}} \\
    \begin{enumerate}
        \item \overlay{1}{\magenta
\begin{verbatim}
s-project
|-- branches
|-- tags
\-- trunk
    |-- Makefile
    |-- README
    \-- src
        |-- Makefile
        \-- test.c
\end{verbatim}
}
\newpage
        \item \overlay{2}{\svncmd{cd \~{}/work/}}
        \item \overlay{3}{\svncmd{svn import -m 'Import projektu do SVN' s-project
            \cmdbreak{}file:///home/lugcon/svn\_root/s-project}}
        \item \overlay{4}{\svncmd{mv s-project s-project.bak}}
        \item \overlay{5}{\svncmd{svn checkout
            \cmdbreak{}file:///home/lugcon/svn\_root/s-project/trunk
            \cmdbreak{}s-project}
        }
    \end{enumerate}
\end{slide}
\TIMING{3}{min}
% */

% sprava verzii /*
\begin{slide}
    \slideheading{Správa verzií}
    \overlay{0}{\textbf{CVS}}
    \begin{itemize}
        \item \overlay{1}{každý súbor má číslovanie revízií zvlášť}
        \item \overlay{2}{príslušnosť nejakej verzie súboru do určitej revízie/míľnika je zapísaná v~RCS súbore
            \texttt{subor.txt,v}}
    \end{itemize}
    
    \begin{center}
        \includegraphics[height=\textheight]{img/t}
    \end{center}
    
    \overlay{3}{\textbf{SVN}}
    \begin{itemize}
        \item \overlay{4}{spoločné číslovanie revízií pre všetky projekty}
        \item \overlay{5}{podpora transakcií}
        \item \overlay{6}{míľniky sú nezávislé stromy v~adresárovej štruktúre}
    \end{itemize}
    
    \begin{center}
        \includegraphics[]{img/ch08dia1}
    \end{center}
    
    \begin{center}
        \includegraphics[]{img/ch08dia2}
    \end{center}

\end{slide}
\TIMING{2}{min}
% */

% atributy suborov /*
\begin{slide}
    \slideheading{Atribúty súborov}
    \overlay{0}{\textbf{CVS}}
    \begin{itemize}
        \item \overlay{1}{ignorovanie súborov zapísaných v~\file{.cvsignore}}
        \item \overlay{2}{označenie súboru ako binárneho príkazom \\
            \cvscmd{cvs admin -kb image.jpeg}}
    \end{itemize}

    \overlay{3}{\textbf{SVN}}
    \begin{itemize}
        \item \overlay{4}{implementované rozhranie na nastavovanie atribútov súborov}
        \item \overlay{5}{\svncmd{svn propset svn:ignore '*.o *.bak' path/to/directory}}
        \item \overlay{6}{\svncmd{svn propset copyright '(c) 2005 Platon Group' main.c}}
        \item \overlay{7}{ďalšie možné atribúty:
            \svncmd{license svn:executable svn:mime-type svn:keywords svn:svn:eol-style}
            }
    \end{itemize}
\end{slide}
\TIMING{2}{min}
% */

% prehliadanie zmien /*
\begin{slide}
    \slideheading{Prehliadanie zmien a~stav súborov}
    \overlay{0}{\textbf{CVS}}
    \begin{itemize}
        \item \overlay{1}{\cvscmd{cvs diff subor.txt}}
        \item \overlay{2}{\cvscmd{cvs status subor.txt}}
    \end{itemize}

    \overlay{3}{\textbf{SVN}}
    \begin{itemize}
        \item \overlay{5}{\svncmd{svn diff subor.txt}}
        \item \overlay{6}{\svncmd{svn status subor.txt}}
    \end{itemize}
\end{slide}
\TIMING{1}{min}
% */

% symbolicke odkazy, spc. subory /*
\begin{slide}
    \slideheading{Symbolické odkazy a špeciálne súbory}
    \overlay{0}{\textbf{CVS}}
    \begin{itemize}
        \item \overlay{1}{bez podpory vkladania symbolických odkazov}
    \end{itemize}

    \overlay{2}{\textbf{SVN}}
    \begin{itemize}
        \item \overlay{3}{symbolické odkazy SVN zvláda bez problémov}
    \end{itemize}
\end{slide}
\TIMING{1}{min}
% */

% odstranenie suboru z projektu /*
\begin{slide}
    \slideheading{Odstránenie súboru z projektu}
    \overlay{0}{\textbf{CVS}}
    \begin{itemize}
        \item \overlay{1}{
            \cvscmd{rm -f test.txt} \\
            \cvscmd{cvs remove test.txt} \\
            \cvscmd{cvs commit -m 'Subor odstraneny' test.txt}
        }
    \end{itemize}

    \overlay{2}{\textbf{SVN}}
    \begin{itemize}
        \item \overlay{3}{
            \svncmd{svn remove test.txt} \\
            \svncmd{svn commit -m 'Subor odstraneny' test.txt}
        }
    \end{itemize}
\end{slide}
\TIMING{1}{min}
% */

% riesenie konfliktov /*
\begin{slide}
    \slideheading{Riešenie konfliktov}
    S bežným zlučovaním zmien na rôznych miestach súboru si CVS aj~SVN hravo poradí. Problém nastane, ak dvaja vývojári
    spravia rozdielne zmeny v tej istej časti kódu a~ich zmeny sú navzájom nekompatibilné.

    \overlay{0}{\textbf{CVS}}
    \begin{itemize}
        \item \overlay{1}{
            \cvscmd{cvs update} \\
            \cvscmd{vim test.c} \\
            \cvscmd{cvs diff} \\
            \cvscmd{cvs commit -m 'Rucne zlucenie zmien.' test.c} \\
        }
    \end{itemize}
    \newpage

    \overlay{2}{\textbf{SVN}}
    \begin{itemize}
        \item \overlay{3}{
            \svncmd{svn update} \\
            \svncmd{vim test.c} \\
            \svncmd{svn resolved test.c} \\
            \svncmd{svn commit -m 'Rucne zlucenie zmien.' test.c}
        }
    \end{itemize}
\end{slide}
\TIMING{3}{min}
% */

% zrusenie zmien /*
\begin{slide}
    \slideheading{Zrušenie zmien}
    \overlay{0}{\textbf{CVS}}
    \begin{itemize}
        \item \overlay{1}{
            \cvscmd{rm -f test.txt} \\
            \cvscmd{cvs update test.txt}
        }
    \end{itemize}

    \overlay{2}{\textbf{SVN}}
    \begin{itemize}
        \item \overlay{3}{
            \svncmd{svn revert test.txt}
        }
    \end{itemize}
\end{slide}
\TIMING{2}{min}
% */

% vetvy vyvoja, zlucovanie zmien /*
\begin{slide}
    \slideheading{Vetvy vývoja, zlučovanie zmien}
    \textbf{CVS}
    \begin{itemize}
        \item pre každý súbor existuje samostatný strom revízií
    \end{itemize}

    \textbf{SVN}
    \begin{itemize}
        \item jedna revízia je stromová štruktúra adresárov a~súborov
        \item táto štruktúra sa v čase mení, čiže čas pridáva dvojdimenzionálnej štruktúre tretí rozmer
    \end{itemize}
\end{slide}
\TIMING{1}{min}
% */

% zalozenie novej vetvy vyvoja /*
\begin{slide}
    \textbf{CVS}
    \begin{itemize}
        \item vytvorenie novej vývojovej vetvy: \\
            \cvscmd{cvs tag -b rel-1-0-patches}
        \item prístup k novej vetve: \\
            \cvscmd{cvs checkout -r rel-1-0-patches c-project}
        \item prepnutie do novej vetvy: \\
            \cvscmd{cvs update -r rel-1-0-patches}
        \item začlenenie zmien z~vetvy rel-1-0-patches: \
            \cvscmd{cvs update -j rel-1-0-patches} \\
            \cvscmd{cvs commit -m 'Zahrnute opravy z verzie 1.0'}
    \end{itemize}

    \newpage

    \textbf{SVN}
    \begin{itemize}
        \item vytvorenie novej vývojovej vetvy: \\
            \svncmd{svn checkout
                \cmdbreak{}file:///home/lugcon/svn\_root/s-project
                \cmdbreak{}s-project} \\
            \svncmd{cd s-project} \\
            \svncmd{svn copy trunk branches/rel-1-0-patches}
        \item prístup k novej vetve: \\
            \svncmd{svn checkout
                \cmdbreak{}file:///home/lugcon/svn\_root/s-project/bran-\\ches/rel-1-0-patches}
    \newpage

        \item začlenenie zmien z hlavnej vetvy: \\
            \svncmd{svn merge -r 343:344
                \cmdbreak{}file:///home/lugcon/svn\_root/s-project/trunk} \\
            \svncmd{svn commit
                \cmdbreak{}-m "Zaclenienie zmien r344 z hlavnej vetvy trunk."}
    \end{itemize}
\end{slide}
\TIMING{10}{min}
% */

% ine metody pristupu k ulozisku /*
\begin{slide}
    \slideheading{Iné metódy prístupu k úložisku}
    \overlay{0}{\textbf{CVS}}
    \begin{itemize}
        \item \overlay{1}{bez modulárnej štruktúry, bez API}
        \item \overlay{1}{spúšťanie cez inetd}
        \item \overlay{1}{tunelovanie cez ssh}
        \item \overlay{1}{lokálne}
    \end{itemize}

    \overlay{3}{\textbf{SVN}}
    \begin{itemize}
        \item \overlay{4}{dobre navrhnuté API, rôzny backend (bdb, fsfs)}
        \item \overlay{5}{spúšťanie cez inetd}
        \item \overlay{6}{tunelovanie cez ssh}
        \item \overlay{7}{lokálne}
        \item \overlay{8}{WebDAV, spúštanie cez Apache 2.x}
    \end{itemize}
\end{slide}
\TIMING{1}{min}
% */

% zalohovanie uloziska, synchronizacia /*
\begin{slide}
    \slideheading{Zálohovanie úložiska, synchronizácia}
    \begin{itemize}
        \item \overlay{0}{CVS zálohovať ako ostatné súbory na disku}
        \item \overlay{1}{SVN zálohovať utilitou \svncmd{svnadmin}: \\
            \svncmd{svnadmin dump file:///home/lugcon/svn\_root}
            }
    \end{itemize}
    \textbf{Synchronizácia} \\
    \svncmd{rsync -a -e ssh --delete --progress --stats
        \cmdbreak{}/home/rajo/svn\_root/
        \cmdbreak{}rajo@platon.sk:/home/rajo/svn\_root/}
        
    \textcolor{red}{Pozor na koncové lomítka a poradie parametrov!} \\
    Najlepšie je spraviť skript, ktorý synchronizáciu spraví za Vás.
    
\end{slide}
\TIMING{2}{min}
% */

% Dalsie nastroje /*
\begin{slide}
    \slideheading{Domovské stránky projektov}
    \textbf{CVS:}
    \begin{itemize}
        \item \URL{http://ximbiot.com/cvs/cvshome/}
    \end{itemize}
    \textbf{SVN:}
    \begin{itemize}
        \item \URL{http://subversion.tigris.org/}
        \item dokumentácia \URL{http://svnbook.red-bean.com/}
    \end{itemize}
\end{slide}
\TIMING{2}{min}
% */

% Dalsie nastroje /*
\begin{slide}
    \slideheading{Ďalšie nástroje na správu verzií}
    \textbf{Slobodné alternatívy:}
    \begin{itemize}
        \item git \URL{http://git.or.cz/}
        \item SVK \URL{http://svk.elixus.org/}
        \item GNU arch \URL{http://www.gnu.org/software/gnu-arch/}
        \item darcs \URL{http://abridgegame.org/darcs/}
    \end{itemize}
    \textbf{Komerčné alternatívy:}
    \begin{itemize}
        \item BitKeeper \URL{http://www.bitkeeper.com/}
        \item Rational ClearCase \URL{http://www-306.ibm.com/software/awdtools/clearcase/}
        %\item Microsoft SourceSafe \URL{http://msdn.microsoft.com/vstudio/previous/ssafe/}
    \end{itemize}
    Ďalšie porovnania na \URL{http://www.bitkeeper.com/Comparisons.html}

    \textbf{Konvertory:}
    \begin{itemize}
        \item cvs2svn \URL{http://cvs2svn.tigris.org/} -- funguje bez problémov
    \end{itemize}
\end{slide}
\TIMING{2}{min}
% */

% ZAVER /*

\def\bgtext{}% vypneme logo "Vim"

\begin{slide}
    \slideheading{Záver}
    \begin{center}
        \strut{}\vfill
        {\large\bf Ďakujem za pozornosť}\\
        \strut{}\strut\\
        {\large Mgr. Ľubomír  Host}\\
        \texttt{\footnotesize <rajo AT platon.sk>}\\
        \texttt{\footnotesize http://rajo.platon.sk} \\
        \strut{}\strut\\
        {\large Združenie Platón}\\
        {\footnotesize združenie na podporu otvoreného softvéru} \\
        \texttt{\blue http://www.platon.sk}\\
        \vfill{}\strut\\
        \tiny{Powered by: \\
        Vim, \LaTeX, GNU/Linux Debian, \vimconfig{} \\
        PLaTos -- \URL{\blue http://platos.platon.sk/}
        }\\
        {}\strut\\
    \end{center}
\end{slide}
\TIMING{1}{min}

%\begin{slide}
%    \listofslides
%\end{slide}

% end ZAVER */

\end{document}

% vim: ts=4
% vim600: fdl=0 fdm=marker fdc=3 fmr=/*,*/ tw=120


Platon Group <platon@platon.sk> http://platon.sk/
Copyright © 2002-2006 Platon Group
Stránka používa redakčný systém Metafox
Na začiatok