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} |
---|
81 | As 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 |
---|
85 | perturbed :) 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 |
---|
226 | conversion: |
---|
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} |
---|
256 | We 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}{} |
---|
288 | We obtained : |
---|
289 | \small |
---|
290 | \begin{center} |
---|
291 | \begin{tabular}{ccc} |
---|
292 | \hline ${\cal R}atio$ & $T_{max}(s)$ & Average action time (s) \\ \hline |
---|
293 | 0.01 & 3600.0& 1.34 \\ |
---|
294 | 0.01 & 100.0& 1.06 \\ |
---|
295 | 0.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} \\ |
---|
299 | 1.0 & 3600.0 & 7.42 \\ |
---|
300 | 1.0 & 100.0& 7.06 \\ |
---|
301 | 1.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 -------------------------% |
---|