source: atlas/presentations/SVN07-04_2006-sit.tex

Last change on this file was 176, checked in by garonne, 18 years ago

dernière version

File size: 15.2 KB
RevLine 
[168]1\documentclass [compress, t]{beamer}
2\usepackage{styles/beamerthemeMarseille}
3\usepackage[latin1]{inputenc}
4\usepackage{epsfig}
5\usepackage{graphicx}
6\usepackage{graphics}
7\usepackage{subfigure}
8\usepackage{color}
9\usepackage{algorithmic}
10\usepackage{algorithm}
11\usepackage{pgfarrows, pgfnodes}
12\usepackage{url}
13\usepackage{textcomp}
14\usepackage{url}\urlstyle{sf}
15\usepackage{xspace} 
16\usepackage{listings}
17
18% Beamer Options
19\setbeamercovered{dynamic}
20\setbeamertemplate{blocks}[rounded][shadow=true]
21%\setbeamertemplate{background canvas}[vertical shading][bottom=white,top=structure.fg!20]
22
23%%%% macros %%%%
24
25% Macros
26\newcommand{\cmt}    {{\em CMT}\@\xspace}%
27\newcommand{\svn}    {{\em SVN}\@\xspace}%
28\newcommand{\cvs}    {{\em CVS}\@\xspace}%
29
30\setbeamercovered{dynamic}
31
32\definecolor{rltgreen}{rgb}{0,0.5,0}
33\pgfdeclareimage[height=0.5cm]{LogoLAL}{logos/logo}
34\logo{ \pgfuseimage{LogoLAL} }
35
36\title{SVN evaluation and proposal for Atlas, \\ Atlas software week}
37\author{Christian Arnault, Vincent Garonne\\
38\{arnault,garonne\}@lal.in2p3.fr}
[174]39\institute{Laboratoire de l'Accélérateur Linéaire}
[168]40\date {April 7, 2006} % \today
41
42\begin{document}
43
44% Transparent: Première page
45\begin{frame}
46\maketitle
47%\textcolor{gray}{\it \scriptsize }
48\end{frame}
49
50%------------------------------- SECTION -------------------------%
51\section*{Outline}
[170]52
53%------------------------------- SLIDE -------------------------%
[168]54\frame
55{
56% \frametitle{Outline}
57 \vfill
58   \begin{block}{Outline}
59 \tableofcontents[hideallsubsections]
60 \end{block}
61}
62
63%------------------------------- SECTION -------------------------%
64\section[svn introduction]{\svn in a nutshell} 
65
[170]66%------------------------------- SLIDE -------------------------%
[168]67\frame
68{
69 \frametitle{\svn in a nutshell}
70 \begin{block}{What is Subversion (or SVN) ?}
71\begin{itemize}
72            \item  Source code management system
73            \item  Open Source project (\url{http://subversion.tigris.org/})
74             \item \svn has new features that cover many limitations of \cvs
75             \item Subversion commands are very similar to \cvs, most of
76             the time it's a matter of  replacing \texttt{"cvs"} with \texttt{"svn"}~\cite{cvscrossover}
77\end{itemize}
78\end{block}
79
80\begin{block}{Questions for Atlas}
81As we have observed limitations/weird behaviors of \cvs:
82\begin{itemize}
83\item Is it appropriate to do a swap  ?
[174]84\item Are the Atlas developers enough
[168]85perturbed :) by the multi-projects structure without adding that ?
86\end{itemize}
87\end{block}
88}
89
90%------------------------------- SECTION -------------------------%
[174]91\section[CVS/SVN comparison]{\svn versus \cvs} 
[170]92
93%------------------------------- SLIDE -------------------------%
[168]94\frame
95{
96\frametitle{\cvs versus \svn}
97\begin{itemize}
98      \item \svn really works faster than \cvs :
99      \begin{itemize}
100      \setbeamertemplate{itemize items}[circle]     
101          \item Transmits less information through the network
102           \item Supports more operations for offline mode, e.g
103           client sends deltas to server when committing
104        \end{itemize}
105%      \item More details : 
106\end{itemize}
107\scriptsize
108\begin{table}[htb]
109\begin{center}
110\begin{tabular}{|l|c|c|}
111\hline
112\texttt { \large \bf \textcolor{blue}{Source code management system}} & {\bf \large  \textcolor{blue}{\cvs} } & {\bf \large  \textcolor{blue}{\svn}}  \\ 
113\hline
114\hline
115\texttt {\bf Atomic Commits } & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
116\texttt    {\bf Efficient (constant-time) tagging } & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
117\texttt {\bf File renames handles cleanly (renaming, moving)} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
118\texttt {\bf Advanced Merging Features} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
119\texttt {\bf Manipulation of all the file types} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
120\texttt {\bf Easy Development on Branches} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
121\texttt {\bf Easy Server Administration} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
122\texttt {\bf Remote Repository Replication} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
123\texttt {\bf Scalable Performance and Admin} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
124\texttt {\bf Advanced repository permissions Features}  & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
125\texttt {\bf Web Browser Interfaces} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
126\texttt {\bf HTTP proxy to connect the server} & \textcolor{red}{No} & \textcolor{green}{\em Yes} \\ \hline
127\end{tabular} 
128\end{center}
129\end{table}
130** For more infos, look~\cite{svnvscvs}
131}
132
133%------------------------------- SECTION -------------------------%
134\section[Proposal]{Proposal for Atlas} 
[170]135
136%------------------------------- SLIDE -------------------------%
[168]137\frame
138{
139\frametitle{Scenario for Atlas}
140
141\begin{block}{ Roadmap}
142\begin{enumerate}
[176]143      \item Convert the Atlas CVS repository into a Subversion one   
[168]144      \item Provide tools to provide synchronization operations between \cvs and \svn repositories
145       \begin{itemize}
146                 \setbeamertemplate{itemize items}[circle]     
147                  \item  For a certain period,  we will have both system running at the same time
148                   \item remark: iterative transition is less painful for the developers :)
149       \end{itemize}
150       \item Incorporate \svn in the complex Atlas software management chain, it supposes impact to :
151       \begin{itemize}
152                  \setbeamertemplate{itemize items}[circle]     
153                   \item CMT
154                   \item Tag Collector
155                   \item Nicos
156       \end{itemize}
[174]157       \item If successful, we could do the permanent switch; if not ... :(
[168]158\end{enumerate}
159\end{block}
160}
161
[170]162%------------------------------- SLIDE -------------------------%
[168]163\frame
164{
165  \frametitle{CVS repository conversion}
166   \begin{block}{Conversion script}
[176]167    For better understanding, we have developed our own
[168]168   \texttt{cvs2svn} python script {\small (\texttt{\url{/afs/cern.ch/atlas/scripts/cvs2svn.py}})}:
169   \begin{itemize}
170                  \setbeamertemplate{itemize items}[circle]
171                   \item Keeps the history of all tags up to HEAD
172                   \item Skips the intermediate commits between 2 tags
173                   \item Can be applied iteratively
174   \end{itemize}     
175   \end{block}
176   \begin{block}{Definition of a repository organization}
177   \begin{itemize}
[172]178   \item SVN gives full freedom in terms of internal structure
[168]179    \item Tags, branches are views to the source history
180   \begin{itemize}
181       \setbeamertemplate{itemize items}[circle]
[174]182        \item  in CVS, they are meta-data applied to individual files
[168]183     and appear like directory structures
184   \end{itemize}
185   \item  Views can be freely modified and have revision number
186 \end{itemize}
187  \end{block}
188  }
189
[170]190%------------------------------- SLIDE -------------------------%
[168]191\frame
192{
193\frametitle{Converting CVS Repository to Subversion}
194 \begin{block}{}
195 \begin{itemize}
196\item We have selected the following organization for each project/package/tag:\\
197\texttt{\textcolor{blue}{
198<project>/.../<package>/trunk/...\\
[176]199<project>/.../<package>/tags/<tag>/...}} 
[168]200\end{itemize}
201\end{block}
202
203 \begin{block}{}
204 \begin{itemize}
205 \item The complete Atlas cvs repository has been converted to a svn one. The svn url is :\\
206       {\small   \texttt{\url{file:///afs/cern.ch/atlas/software/svnrepository/repository}}}
207\item It takes a looong time to do that the first time
208 \begin{itemize}
209         \setbeamertemplate{itemize items}[circle]
210          \item Try different \svn backends: Berkley DB,  \underline{\svn file system} 
[176]211          \item It takes one week  to complete the procedure, e.g. 8 hours for the AtlasCore project
212          \item But update will only concern recent tags
[168]213\end{itemize}
214\end{itemize}
215\end{block}
216}
217
[170]218%------------------------------- SLIDE -------------------------%
219\frame
220{
221\frametitle{Conversion validation and management tools}
[168]222
[170]223\begin{block}{Conversion validation tools}
224\begin{itemize}
225\item We have implemented several tests to check the quality of the
226conversion:
227\begin{itemize}
228         \setbeamertemplate{itemize items}[circle]
229         \item  Comparing the sources at each tag with diff tests
[172]230          \item Comparing the list of tags for a package
[170]231         \item Check global structure of the \svn repository
232         \item \url{/afs/cern.ch/atlas/scripts/testcvs2svn.py}
233\end{itemize}
234\end{itemize}
235\end{block}
236
237\begin{block}{Management tools}
238\begin{itemize}
239\item We have also implemented a script which re-organizes the SVN repository:\\
[176]240\texttt{\textcolor{blue}{<project>/.../<package>/trunk/...\\
[170]241<project>/.../<package>/<tag>/...}}
242\end{itemize}
243\end{block}
244}
245
246
[168]247%            \item A "CVS complient" script is available at cern
248%                     \texttt{/afs/cern.ch/atlas/scripts/asvn}
249%             \item \url{http://uimon.cern.ch/twiki/bin/view/Atlas/StudiesForUsingSVNInAtlas}
250
[170]251%------------------------------- SLIDE -------------------------%
[168]252\frame
253{
254\frametitle{Performance and scalability}
255 \begin{block}{Test stress scenario}
256We define the following {\bf action} for an user:
257\begin{itemize}
[172]258           \item User selects randomly a package
259           \item  He extracts and modifies it, then registers it until the operation is successful
[168]260           \item Then he sleeps $n$ seconds with $n$ sort randomly $ \in [1, T_{max}]$
261\end{itemize}
262\end{block}
263
264\begin{block}{Experiment parameters}
265\begin{itemize}
266\item We have done experiments with different:
267\begin{itemize}
268            \setbeamertemplate{itemize items}[circle]
269             \item Total number of users (10, \textcolor{blue}{100}, 1000)
270             \item Total number of packages (10, \textcolor{blue}{1000}, 10.000)
271\end{itemize}
272\item Concurrent user actions were launched by a multi-threaded program
[170]273({\small\texttt{\url{/afs/cern.ch/user/v/vgaronne/svnTestStress}}})
[168]274\end{itemize}
275\end{block}
276}
277
[170]278%------------------------------- SLIDE -------------------------%
[168]279\frame{
280\frametitle{Performance and scalability - Results}
281\begin{block}{}
282\begin{itemize}
283\item Let ${\cal R}atio$ be the ratio  $\frac {Total~number~of~users} {{Total~number~of~packages}}$
284\end{itemize}
285\end{block}
286
287\begin{block}{}
288We obtained :
289\small
290\begin{center}
291\begin{tabular}{ccc} 
[176]292\hline  ${\cal R}atio$ & $T_{max}(s)$ & Average action time (s)  \\ \hline 
[168]2930.01 & 3600.0& 1.34   \\ 
2940.01 & 100.0& 1.06     \\ 
2950.01 & 10.0     & 1.38   \\ 
296\textcolor{blue}{0.1} & \textcolor{blue}{ 3600.0}  & \textcolor{blue}{5.77}     \\
[176]297\textcolor{blue}{0.1}&  \textcolor{blue}{100.0}& \textcolor{blue}{4.26}         \\ 
[168]298\textcolor{blue}{0.1} & \textcolor{blue}{10.0} &  \textcolor{blue}{6.96}          \\ 
2991.0 & 3600.0  & 7.42   \\ 
3001.0 & 100.0& 7.06         \\ 
3011.0 & 10.0& 8.88\\
302\end{tabular}
303\end{center}
304{\footnotesize\textcolor{blue}{**In blue, the values relevant for Atlas}}
305\end{block}
306}
307
[170]308%------------------------------- SLIDE -------------------------%
[168]309\frame{
310\frametitle{Synchronization operations}
311\begin{block} {Mainly at the user level:}
312\begin{itemize}
313             \item We proposed a script \texttt{"asvn"} that mimics the CVS syntax for SVN, including the synchronization operations on tags:
314             \begin{itemize}
315                        \setbeamertemplate{itemize items}[circle]
[170]316                        \item Non exhaustive commands are: checkin,  checkout , tag, ...
[168]317                        \item Provides also cmt specific commands working with SVN, e.g.
318                        recursive checkout,  svntags, svnsubprojects, ...
319                        \item see \url{/afs/cern.ch/atlas/scripts/asvn}                         
320             \end{itemize}             
321             \item \textcolor{red} {We assume that when users switch completely to svn for a package,
322             they will not work anymore with \cvs for this package, otherwise we will have integrity problems}             
[172]323             \item The synchronization operation should be triggered at the user/developer level during tag operations\\
[168]324                \texttt{> asvn --sync tag Package-00-00-01 Package}
325\end{itemize}
326\end{block}
327}
328
[170]329%------------------------------- SLIDE -------------------------%
[168]330\frame{
[170]331\frametitle{Impact to the Atlas software management chain and tools}
[168]332
333\begin{block} {Impact to the work model}
334\begin{itemize}
335\item  No real change is expected
336\end{itemize}
337\end{block}
338
339\begin{block} {Impact to the tools}
340\begin{itemize}
[172]341                                \item CMT: The \texttt{"asvn"} script previously presented covers these aspects
342                                 \item Tag Collector: Needs an interface to SVN, but should be much simpler than the interface to CVS. If not  possible immediately,
[168]343                                     we could go on  temporally with the synchronized Atlas CVS repository
[170]344                               \item  NICOS: Normaly only concerned with checkout operations ?
[168]345\end{itemize}
346\end{block}
347}
348
[171]349
350%------------------------------- SLIDE -------------------------%
[172]351\frame{ 
[176]352\frametitle{A brief summary by pictures...}
[172]353%\begin{center}
354      %\vfill
[176]355      \includegraphics<1>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SoftwareFlow00}
356      \includegraphics<2>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SoftwareFlow01}
357      \includegraphics<3>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SoftwareFlow02}
358      \includegraphics<4>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SoftwareFlow03}
359      \includegraphics<5>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SoftwareFlow04}
360      \includegraphics<6>[width=0.92\paperwidth,height=0.74\paperheight]{figures/SoftwareFlow05}
[172]361%+\end{center}
[171]362}
363
[168]364%------------------------------- SECTION -------------------------%
365\section{Conclusion}
[170]366
367%------------------------------- SLIDE -------------------------%
[168]368\frame{
369\frametitle{Conclusion}
370
[170]371\begin{block} {}
372\begin{itemize}
[176]373\item All the necessary tools are in place to start using SVN in Atlas
[170]374\item Testing by real users, will help to tune and improve these tools
[172]375\item Doing more tests to validate the atlas svn repository
[176]376\item We should clarify the migration policy
377%\begin{itemize}
378%        \item Management of the "CVSROOT/commitavail" file for each package
379 %       to guaranty synchronization between CVS and SVN repository
380%\end{itemize}
381\item  Implementing the interface to SVN in Tag Collector%, depends  on TC team availability
[170]382\end{itemize}
383\end{block} 
[172]384\begin{block} {Future}
[170]385\begin{itemize} 
[172]386           \item  SVN brings lots of new interesting features, that we could use incrementally :
[170]387            \begin{itemize} 
388                      \setbeamertemplate{itemize items}[circle]
389                      \item Metadata features
390                      \item  Real Multi-repository
391                       \item  Directory management
392                       \item Transparent branch management
393          \end{itemize}
394\end{itemize}
395\end{block} 
396}
[168]397%------------------------------- SECTION -------------------------%
[170]398\section*{References}
399
400%------------------------------- SLIDE -------------------------%
[168]401\frame[allowframebreaks]
402{
403\frametitle{References}
404\nocite{subversion}
405\nocite{cvs2svn}
406\bibliographystyle{unsrt}
407\bibliography{CMT06-04-2006-sit}
408}
409
410\end{document}
411%------------------------------- End Of File -------------------------%
Note: See TracBrowser for help on using the repository browser.