mirror of https://github.com/CGAL/cgal
173 lines
6.7 KiB
TeX
173 lines
6.7 KiB
TeX
% =============================================================================
|
|
% The CGAL Developers' Manual
|
|
% Chapter: SVN Server
|
|
% -----------------------------------------------------------------------------
|
|
% file : svn.tex
|
|
% authors: Mariette Yvinec, Sylvain Pion <Sylvain.Pion@sophia.inria.fr>
|
|
% -----------------------------------------------------------------------------
|
|
% $Id$
|
|
% $Date$
|
|
% =============================================================================
|
|
|
|
\chapter{SVN Server\label{chap:svn}}
|
|
\ccChapterRelease{Chapter Version: 3.0}
|
|
\ccChapterAuthor{Sylvain Pion ({\tt Sylvain.Pion@sophia.inria.fr})}
|
|
\index{SVN server|(}
|
|
|
|
SVN (Subversion) is a popular version control
|
|
system that keeps track of the complete history of changes for a set of
|
|
source files. SVN is of great help when several people work on the
|
|
same project.
|
|
|
|
You can find the SVN manual at \path|http://svnbook.red-bean.com|.
|
|
Lots of documentation, including tutorials, can easily be found on the net.
|
|
|
|
The InriaGForge site \path|http://gforge.inria.fr| hosts a SVN server for \cgal.
|
|
The complete documentation to access the \cgal\ project on InriaGForge
|
|
is at \path|http://www.cgal.org/Members/svn_cgal/|.
|
|
In a nutshell:
|
|
|
|
\section{Structure of the repository\label{sec:svn_structure}}
|
|
\index{SVN server!directory structure}
|
|
\ccIndexSubitem{directory structure}{for SVN server}
|
|
|
|
The \cgal\ repository, which is backed up daily,
|
|
\index{SVN server!backup}
|
|
is organized in the following way:
|
|
\begin{itemize}
|
|
\item There is one folder under \texttt{/svn/cgal/trunk/} per \cgal\ package.
|
|
\item Such a folder has the same structure as the current \cgal\ packages
|
|
(Chapter~\ref{chap:directory_structure}).
|
|
|
|
As a general rule, try to not put under SVN control any files
|
|
that are automatically generated.
|
|
Note that you can put some files under SVN control that you don't
|
|
want to be included in releases (\textit{e.g.}, literate programming
|
|
web files).
|
|
You can do that by adding their names in a \texttt{dont\_submit} file
|
|
\index{SVN server!dont_submit file@\texttt{dont\_submit} file}
|
|
(at the top of the module), using the syntax explained in the
|
|
\texttt{tar} manual (see the \texttt{--exclude-from}
|
|
option in the doc at \path|http://www.gnu.org/manual/tar/|).
|
|
The following files are always excluded from submissions:
|
|
\texttt{TODO}, \texttt{todo}, \texttt{TODO.txt}, \texttt{todo.txt},
|
|
\texttt{TO\_DO}, \texttt{Doxyfile} and \texttt{*.dxy}.
|
|
\end{itemize}
|
|
|
|
The repository tree has the following structure:
|
|
|
|
\begin{verbatim}
|
|
/svn/cgal
|
|
|
|
|
+---- trunk/
|
|
| |
|
|
| +--- Convex_hull_2/
|
|
| | |
|
|
| | |-- TODO
|
|
| | |
|
|
| | +-- package_info/Convex_hull_2/
|
|
| | | |
|
|
| | | |-- maintainer
|
|
| | | |
|
|
| | | |-- description.txt
|
|
| | |
|
|
| | +-- include/CGAL/
|
|
| | |
|
|
| | +-- src/
|
|
| | |
|
|
| | +-- doc_tex/
|
|
| | |
|
|
| | +-- examples/Convex_hull_2/
|
|
| | |
|
|
| | +-- demo/Convex_hull_2/
|
|
| | |
|
|
| | +-- test/Convex_hull_2/
|
|
| | |
|
|
| | +-- ...
|
|
| |
|
|
| +--- Number_types/
|
|
| |
|
|
| +--- Cartesian_kernel/
|
|
| |
|
|
| +--- ...
|
|
|
|
|
+---- branches/
|
|
| |
|
|
| +--- CGAL-1-1-patches/
|
|
| |
|
|
| +--- ...
|
|
|
|
|
+---- tags/
|
|
|
|
|
+--- CGAL-1-0/
|
|
|
|
|
+--- ...
|
|
\end{verbatim}
|
|
|
|
|
|
\section{Access to the repository\label{sec:svn_access}}
|
|
\index{SVN server!access|(}
|
|
|
|
Here are the access rules:
|
|
\begin{itemize}
|
|
\item Everybody who has a login and is part of the \cgal\ project on InriaGForge
|
|
has read/write access to the \cgal\ repository via SVN. There is also
|
|
read-only access for members via the web at
|
|
\path|https://gforge.inria.fr/plugins/scmsvn/viewcvs.php/?root=cgal|.
|
|
\item Each package has a set (which can be only one person) of people having
|
|
write access to the corresponding folder. It's up to the maintainer of
|
|
the package to decide who is given write access, and how you should
|
|
coordinate. \\
|
|
This rule is not currently enforced by SVN (each \cgal\ developer has
|
|
write access to the whole repository from SVN's point of view).
|
|
\cgal\ developers must voluntary enforce this rule.
|
|
\item Currently, there is no anonymous read-only access via SVN. Only the
|
|
read/write access for members via SVN over SSH is available.
|
|
\end{itemize}
|
|
\index{SVN server!access|)}
|
|
|
|
|
|
\section{How to use it\label{sec:svn_how_to}}
|
|
|
|
\begin{itemize}
|
|
\item
|
|
The first step is to register to InriaGForge at \path|http://gforge.inria.fr|.
|
|
\item
|
|
Step 2 is to create a pair of public/private SSH 2 keys,
|
|
and to upload the public one to InriaGForge.
|
|
\item
|
|
To be added to \cgal\ project, send your login name to
|
|
\ccAnchor{mailto:Sylvain.Pion@sophia.inria.fr}
|
|
{\texttt{Sylvain.Pion@sophia.inria.fr}} or
|
|
\ccAnchor{mailto:Laurent.Saboret@sophia.inria.fr}
|
|
{\texttt{Laurent.Saboret@sophia.inria.fr}}.
|
|
\item
|
|
If your SSH key contains a passphrase, you have to enter it
|
|
in \texttt{ssh-agent}. Type: \\
|
|
\texttt{ssh-add} \\
|
|
and enter the passphrase corresponding to your key.
|
|
\item
|
|
At this point, it's handy to store the repository URL in a shell variable: \\
|
|
\texttt{export svncgal=svn+ssh://scm.gforge.inria.fr/svn/cgal}
|
|
\item
|
|
To get the list of existing modules: \\
|
|
\texttt{svn ls \$svncgal/trunk}
|
|
\item
|
|
To check out a module, say \ccc{Convex\_hull\_2}: \\
|
|
\texttt{svn co \$svncgal/trunk/Convex\_hull\_2}
|
|
\item
|
|
Once you have checked out a module, you don't need to specify the
|
|
\texttt{\$svncgal} URL anymore for the usual commands like \texttt{svn commit}...
|
|
\item
|
|
You may check out all packages by: \\
|
|
\texttt{svn co \$svncgal/trunk}
|
|
\end{itemize}
|
|
|
|
After each commit, an automatic mail is sent to the
|
|
\texttt{cgal-commits@lists.gforge.inria.fr} mailing-list which records
|
|
the log message as well as the URLs to the corresponding diffs within
|
|
the ViewCVS interface. Maintainers and developpers can subscribe
|
|
to it in order to check what gets commited to their packages.
|
|
|
|
\index{SVN server|)}
|