% SVN quick reference card, (C) 2002 Ben Collins-Sussman <sussman@red-bean.com>
%
% Based on a CVS quickref card by Jim Blandy <jimb@red-bean.com>

\documentclass{report}
\topmargin -0.8in
\pagestyle{empty}

\textheight=10in
\oddsidemargin=0in
\newcommand{\s}{\tt /}

\begin{document}

\hspace{-0.7in}
\begin{tabular}{ll}
\vspace{0.1in} \hspace{-0.1in}{\bf\LARGE SVN Quick Reference}
						& \\ \\

%-------------------------------------------------------------------------
\vspace{0.1in} \hspace{-0.1in}{\bf\Large Getting Help}
                                                &  \\

{\tt svn help}	                      		&
get list of subcommands                          \\

{\tt svn help} {\sl subcommand}  		&
get help on {\sl subcommand}		          \\


%-------------------------------------------------------------------------
\\
\\
\vspace{0.1in} \hspace{-0.1in}{\bf\Large Working Copies}   &
(If {\sl [targets\dots]} are omitted, SVN assumes `{\tt .}')  \\

{\tt svn checkout} {\sl [flags]} {\sl URL} {\sl dest} &
create a new working directory {\sl dest} as a copy of {\sl URL} \\

\hspace{0.5in}{\tt -r} {\sl N}		&
check out revision {\sl N} of {\sl URL}	  \\

\\
{\tt svn update} {\sl [flags]} {\sl [targets\dots]}	&
merge repository changes into working {\sl targets}	  \\

\hspace{0.5in}{\tt -r} {\sl N}		&
update to revision {\sl N}		  \\

\\
{\tt svn commit} {\sl [flags]} {\sl [targets\dots]}	&
check local changes into the repository		  \\

\hspace{0.5in}{\tt -m} {\sl message}		&
Use {\sl message} as change's log entry		 \\

\hspace{0.5in}{\tt -F} {\sl logfile}		&
Use contents of {\sl logfile} as change's log entry		 \\

\\
{\tt svn add} {\sl [flags]} {\sl targets\dots}    &
schedule {\sl targets} for addition		         \\

\\
{\tt svn rm} {\sl [flags]} {\sl paths} \verb!|! {\sl URLs\dots}	&
schedule working-copy {\sl paths} for removal,
or immediately delete {\sl URLs}	 \\

\\
{\tt svn import} {\sl path} {\sl URL}	&
recursively commit {\sl path} to {\sl URL} \\

%-------------------------------------------------------------------------
\\
\\
\vspace{0.1in} \hspace{-0.1in}{\bf\Large Working Copy Maintenance} \\

{\tt svn status} {\sl [flags]} {\sl [targets\dots]}	&
recursively show local changes in {\sl targets}  \\

\hspace{0.5in}{\tt -v}		&
show verbose information		  \\

\hspace{0.5in}{\tt -u}		&
show out-of-dateness information from repository		  \\

\\
{\tt svn info} {\sl [targets\dots]}	&
show tracked information on {\sl targets}   \\

\\
{\tt svn revert} {\sl [targets\dots]}	&
revert {\sl targets} to ``pristine'' state   \\

\\
{\tt svn resolved} {\sl [targets\dots]}	&
removes conflict files associated with conflicted {\sl targets}   \\

\\
{\tt svn cleanup} {\sl [targets\dots]}	&
unlock and resume unfinished operations on {\sl targets}   \\


%-------------------------------------------------------------------------
\\
\\
\vspace{0.1in} \hspace{-0.1in}{\bf\Large Metadata}  \\

{\tt svn proplist} {\sl [flags]} {\sl targets\dots}    &
view property names attached to {\sl targets}     \\

\hspace{0.5in}{\tt -v}		&
show property values as well	 \\

\\
{\tt svn propget} {\sl propname} {\sl targets\dots}    &
print value of {\sl propname} attached to {\sl targets}     \\

\\
{\tt svn propset} {\sl propname} {\sl propval} {\sl targets\dots}    &
set {\sl propname} to {\sl propval} on {\sl targets}     \\

\hspace{0.5in}{\tt -F} {\sl file}		&
take property value from {\sl file}	 \\

\\
{\tt svn propdel} {\sl propname} {\sl targets\dots}    &
remove {\sl propname} from {\sl targets}     \\

\\
{\tt svn propedit} {\sl propname} {\sl targets\dots}    &
edit value of {\sl propname} attached to {\sl targets}     \\

%-------------------------------------------------------------------------

% someday we shouldn't manually make a pagebreak with new table;
% instead, we should use one of latex's new ``longtable'' objects,
% which actually knows how to create new pages automatically.

\end{tabular}

\newpage
\hspace{-0.7in}
\begin{tabular}{ll}

%-------------------------------------------------------------------------
\\
\\
\vspace{0.1in} \hspace{-0.1in}{\bf\Large Examining History} & \\

{\tt svn diff} {\sl [flags]} {\sl [target\dots]}  &
show local changes made in {\sl target}		  \\

\hspace{0.5in}{\tt -r} {\sl N}		&
compare with revision {\sl N} of {\sl target} 	 \\

\hspace{0.5in}{\tt -r} {\sl N:M}		&
compare revisions {\sl N} and {\sl M} of {\sl target} 	 \\

\\
{\tt svn diff} {\sl URL1@N} {\sl URL2@M}  &
compare two server paths at revisions {\sl N} and {\sl M}	  \\

\\
{\tt svn log} {\sl [flags]} {\sl targets}		&
show log entries for {\sl targets}			 \\

\hspace{0.5in}{\tt -r} {\sl N[:M]}		&
show log entry for revision {\sl N} or range {\sl N:M}  \\

%-------------------------------------------------------------------------
\\
\\
\vspace{0.1in} \hspace{-0.1in}{\bf\Large Branches and Tags} & \\

{\tt svn cp} {\sl SRC} {\sl DST}		&
copy a working-copy path (or URL) to another working-copy path (or URL)  \\

\hspace{0.5in}{\tt WC => WC}		&
copy and schedule for addition (with history)  \\

\hspace{0.5in}{\tt WC => URL}		&
immediately commit a copy of WC to URL  \\

\hspace{0.5in}{\tt URL => WC}		&
check out URL into WC, schedule for addition  \\

\hspace{0.5in}{\tt URL => URL}		&
complete server-side copy;  used to branch and tag  \\

\\
{\tt svn mv} {\sl SRC} {\sl DST}		&
move a path within a working-copy or repository.  \\

\hspace{0.5in}{\tt WC => WC}		&
move and schedule for addition (with history)  \\

\hspace{0.5in}{\tt URL => URL}		&
complete server-side rename.  \\

\\
{\tt svn switch} {\sl target} {\sl URL}		&
transform working copy {\sl target} into {\sl URL}; used to 'move' to
a tag or branch location   \\

\\
{\tt svn merge} {\sl path1@N} {\sl path2@M} {\sl wcpath}	&
compare wcpaths (or URLs) {\sl path1} and {\sl path2}, and merge differences
into {\sl wcpath} \\

\\
{\tt svn mkdir} {\sl target}		&
immediately create working-copy or URL directory {\sl target}   \\
						 \\
%-------------------------------------------------------------------------
\\
\\
\vspace{0.1in} \hspace{-0.1in}{\bf\Large File Status Flags} &
(as printed by {\tt svn update/switch/merge})		 \\

{\tt U} {\sl filename}				&
item (U)pdated to repository version	 	 \\

{\tt G} {\sl filename}				&
item's local changes were mer(G)ed with repository changes \\

{\tt C} {\sl filename}				&
item's local changes (C)onflicted with repository changes \\

{\tt D} {\sl filename}				&
item (D)eleted from working copy                \\

{\tt A} {\sl filename}				&
item (A)dded to working copy			 \\

\end{tabular}

\end{document}


