forked from kaitanie/git-svn-poster
-
Notifications
You must be signed in to change notification settings - Fork 0
/
poster.tex
218 lines (186 loc) · 7.61 KB
/
poster.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
\documentclass[final,hyperref={pdfpagelabels=false},notitlepage=true]{beamer}
\usepackage{times}
\usepackage{listings}
\usepackage{amsmath,amssymb}
\usepackage[english]{babel}
\usepackage[latin1]{inputenc}
\usepackage[orientation=portrait,size=a0,scale=1.4,debug]{beamerposterbuiltin} % e.g. for DIN-A0 poster
%\usepackage[size=custom,width=200,height=120,scale=2,debug]{beamerposter} % e.g. custom size poster
% ...
\usepackage{xspace}
\usepackage{fp}
\usepackage{ifthen}
\useoutertheme{default}
\useoutertheme{hipinfolines}
\useinnertheme{rounded}
\title[]{\Huge Using Git Distributed Version Control Tool to Manage a HEP Data Analysis Project}
\author{A. Heikkinen\inst{1}, \underline{P. Kaitaniemi\inst{1,2}}}
\institute[] % (optional, but mostly needed)
{
\inst{1}%
Helsinki Institute of Physics P.O.Box 64 (Gustaf H\"allstr\"omin katu 2), FIN-00014 University of Helsinki, Finland
\\
\inst{2}%
CEN-Saclay, CEA-IRFU/SPhN, 91 191 Gif sur Yvette, France
}
\date[March 12th, 2009]{March 12th, 2009}
%Add imafes/hiplogo.png here and CEN-CEA logo as well
\begin{document}
\begin{frame}{}
\begin{center}
\maketitle
\end{center}
\vfill
\begin{abstract}
Version control allows software developers to keep track of project history in
a systematic and detailed manner.
%The project can be a data analysis or simulation program source code,
%or even LaTeX code of a paper or thesis.
In addition to tracking history, version control tools allow
one to merge contributions between several authors.
This is a typical use-case for large projects in high energy physics.
% background
\vspace{2cm}
Recently \emph{CERN has chosen to upgrade centralised CVS version control
system \cite{cernsvn} to another modernised centralised system called Subversion (SVN)} \cite{svnsite}.
Unfortunately it does not offer the flexibility of the
distributed systems we are interested in.
Git, a distributed version control tool \cite{torvalds}, however,
provides this flexibility,
and can be used as a ``super client'' with the CERN SVN service.
%We discuss advantages of distributed version control tools,
%such as Git, over traditional centralised ones.
% our case and example image
%We present an example use case for Git in a HEP data analysis and publication writing project (Fig.~1)~\cite{pk09aProceedings}.
%We also demonstrate how to use Git
%together with CERN central SVN version control for high energy physics data
%analysis software maintenance.
\end{abstract}
\begin{columns}[t]
\begin{column}{0.45\linewidth}
\begin{block}{\large What is version control?}
Benefits of version control for a physics software project.
\begin{itemize}
\item Keep detailed record of all changes to the project.
\item Merge contributions from several authors and track author information
% \item
\end{itemize}
\vpace{1cm}
Generally version control works best for \emph{text files}, such
as code or \LaTeX documents and
most significant advantage of distributed version control is that
users can utilise it locally without heavy support infrastructure.
\end{block}
\vpace{1cm}
\begin{block}{\large Distributed version control}
Distributed version control means that there is \emph{no single server}
that keeps track of all data. This has several benefits:
\begin{itemize}
\item No need for special server machine
\item Easy to set up:
\begin{enumerate}
\item {\tt mkdir myproject} \&\& {\tt cd myproject}
\item {\tt git init}
\end{enumerate}
\item Works locally on users machine and network is needed
only for sharing changes with collaborators.
\item High performance: local operations are fast!
\item Built for branching and merging:
\begin{itemize}
\item {\bf Branching:} Create additional line of
development for a new idea.
\item {\bf Merging:} Combine separate development lines
together.
\end{itemize}
\end{itemize}
\end{block}
\begin{block}{\large Version history}
\includegraphics[scale=1.0]{images/gitk-history.png}
\end{block}
\begin{block}{\large Git GUI, graphical commit tool}
\includegraphics[scale=1.0]{images/gui-screenshot-detail.png}
\end{block}
\begin{block}{\large Git GUI Blame}
Find out who is responsible for each line of code/text. \emph{Unique
feature of Git blame is that it can heuristically find similar
content in other files} that are part of the project thus
allowing us to track content history beyond file boundaries.
\includegraphics[scale=1.0]{images/git-gui-blame-content-copy-detection.png}
\end{block}
\begin{block}{\large Subversion at CERN}
CERN has chosen Subversion revision control to replace its aging CVS based system.
\end{block}
\end{column}
\begin{column}{0.45\linewidth}
\begin{block}{\large Git-SVN: bidirectional Git-SVN gateway}
It is possible to fetch project revisions from SVN repository into a Git
repository, work locally and when finished the local commits
can be pushed back to the central SVN repository.
\vspace{1cm}
Example:
\begin{itemize}
\item {\bf Clone from SVN:} {\tt mkdir root-svn \&\& cd root-svn \&\& git svn init https://svn.root.cern.ch/trunk}
\item {\bf Fetch all revisions:} {\tt git svn fetch}
\item Work locally creating a series of commits
\item {\bf Merge with the central repository:}
\begin{itemize}
\item {\bf Fetch new revisions:} {\tt git svn fetch}
\item {\bf Apply commits on top of the central revisions:} {\tt git svn rebase}
\end{itemize}
\item {\bf Push your changes to the central repository:} {\tt git svn dcommit}
\end{itemize}
\vspace{1cm}
Git-SVN can also be used as an SVN-to-Git conversion tool
for groups that decide to completely switch to Git.
\end{block}
\vspace{1cm}
\begin{block}{\large Workflows}
\includegraphics[scale=0.90]{images/centralizedWorkflow.pdf}
\includegraphics[scale=1.90]{images/collaborativeDevelopmentWithMaintainer.pdf}
\end{block}
% \begin{block}{\large Fontsizes}
% \centering
% {\tiny tiny}\par
% {\scriptsize scriptsize}\par
% {\footnotesize footnotesize}\par
% {\normalsize normalsize}\par
% {\large large}\par
% {\Large Large}\par
% {\LARGE LARGE}\par
% {\veryHuge veryHuge}\par
% {\VeryHuge VeryHuge}\par
% {\VERYHuge VERYHuge}\par
% \end{block}
\begin{block}{\large Bibliography}
%%%
%%% The bibliography: the references are listed here.
%%%
\begin{thebibliography}{9}
\bibitem{cernsvn}
\href{http://cern.ch/svn}{CERN central SVN service (http://cern.ch/svn)}
\bibitem{svnsite}
\href{http://subversion.tigris.org}{Subversion website (http://subversion.tigris.org)}
\bibitem{torvalds}
L.Torvalds with the Linux kernel team,
Git Version Control System website,
\href{http://git-scm.com/}{http://git-scm.com/}
%\bibitem{gitsite} % same as \bibitemtorvalds
%\href{http://git.or.cz}{Git website (http://git.or.cz)}%
\bibitem{pk09aProceedings}
P.~Kaitaniemiemi and A.~Heikkinen et al.,
Ideal $\tau$-tagging with TMVA multivariate data-analysis toolkit,
Proceedings of International Conference on
Computing in High Energy and Nuclear Physics, CHEP'09
(To be published)
\end{thebibliography}
\end{block}
\vfill
\end{column}
\end{columns}
\end{frame}
\end{document}
%%%%%%%%%%%%%%%%%%%%
%%% Local Variables:
%%% mode: latex
%%% TeX-PDF-mode: t
%%% End: