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

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

dernière version

File size: 15.2 KB
Line 
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}
39\institute{Laboratoire de l'Accélérateur Linéaire}
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}
52
53%------------------------------- SLIDE -------------------------%
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
66%------------------------------- SLIDE -------------------------%
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  ?
84\item Are the Atlas developers enough
85perturbed :) by the multi-projects structure without adding that ?
86\end{itemize}
87\end{block}
88}
89
90%------------------------------- SECTION -------------------------%
91\section[CVS/SVN comparison]{\svn versus \cvs} 
92
93%------------------------------- SLIDE -------------------------%
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} 
135
136%------------------------------- SLIDE -------------------------%
137\frame
138{
139\frametitle{Scenario for Atlas}
140
141\begin{block}{ Roadmap}
142\begin{enumerate}
143      \item Convert the Atlas CVS repository into a Subversion one   
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}
157       \item If successful, we could do the permanent switch; if not ... :(
158\end{enumerate}
159\end{block}
160}
161
162%------------------------------- SLIDE -------------------------%
163\frame
164{
165  \frametitle{CVS repository conversion}
166   \begin{block}{Conversion script}
167    For better understanding, we have developed our own
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}
178   \item SVN gives full freedom in terms of internal structure
179    \item Tags, branches are views to the source history
180   \begin{itemize}
181       \setbeamertemplate{itemize items}[circle]
182        \item  in CVS, they are meta-data applied to individual files
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
190%------------------------------- SLIDE -------------------------%
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/...\\
199<project>/.../<package>/tags/<tag>/...}} 
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} 
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
213\end{itemize}
214\end{itemize}
215\end{block}
216}
217
218%------------------------------- SLIDE -------------------------%
219\frame
220{
221\frametitle{Conversion validation and management tools}
222
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
230          \item Comparing the list of tags for a package
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:\\
240\texttt{\textcolor{blue}{<project>/.../<package>/trunk/...\\
241<project>/.../<package>/<tag>/...}}
242\end{itemize}
243\end{block}
244}
245
246
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
251%------------------------------- SLIDE -------------------------%
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}
258           \item User selects randomly a package
259           \item  He extracts and modifies it, then registers it until the operation is successful
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
273({\small\texttt{\url{/afs/cern.ch/user/v/vgaronne/svnTestStress}}})
274\end{itemize}
275\end{block}
276}
277
278%------------------------------- SLIDE -------------------------%
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} 
292\hline  ${\cal R}atio$ & $T_{max}(s)$ & Average action time (s)  \\ \hline 
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}     \\
297\textcolor{blue}{0.1}&  \textcolor{blue}{100.0}& \textcolor{blue}{4.26}         \\ 
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
308%------------------------------- SLIDE -------------------------%
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]
316                        \item Non exhaustive commands are: checkin,  checkout , tag, ...
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}             
323             \item The synchronization operation should be triggered at the user/developer level during tag operations\\
324                \texttt{> asvn --sync tag Package-00-00-01 Package}
325\end{itemize}
326\end{block}
327}
328
329%------------------------------- SLIDE -------------------------%
330\frame{
331\frametitle{Impact to the Atlas software management chain and tools}
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}
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,
343                                     we could go on  temporally with the synchronized Atlas CVS repository
344                               \item  NICOS: Normaly only concerned with checkout operations ?
345\end{itemize}
346\end{block}
347}
348
349
350%------------------------------- SLIDE -------------------------%
351\frame{ 
352\frametitle{A brief summary by pictures...}
353%\begin{center}
354      %\vfill
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}
361%+\end{center}
362}
363
364%------------------------------- SECTION -------------------------%
365\section{Conclusion}
366
367%------------------------------- SLIDE -------------------------%
368\frame{
369\frametitle{Conclusion}
370
371\begin{block} {}
372\begin{itemize}
373\item All the necessary tools are in place to start using SVN in Atlas
374\item Testing by real users, will help to tune and improve these tools
375\item Doing more tests to validate the atlas svn repository
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
382\end{itemize}
383\end{block} 
384\begin{block} {Future}
385\begin{itemize} 
386           \item  SVN brings lots of new interesting features, that we could use incrementally :
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}
397%------------------------------- SECTION -------------------------%
398\section*{References}
399
400%------------------------------- SLIDE -------------------------%
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.